2016-09-22 45 views
0

我不明白這一點,請幫助。這裏是我的代碼:VB.Net只讀屬性被自動初始化而沒有獲取代碼執行

Class MyCookie 
    Private _CookieName As String 

    ReadOnly Property CookieName As String 
     Get 
      If String.IsNullOrWhiteSpace(_CookieName) Then _CookieName = "Test" 
      Return _CookieName 
     End Get 
    End Property 
End Class 

我在屬性獲取過程中放置​​一個斷點。當我初始化MyCookie類時,MyCookie.CookieName已經有了「測試」,但是斷點從未被擊中!

我缺少什麼?

回答

2

調試器對該屬性顯示的其他值是什麼?調試器必須執行該屬性以獲取要在IDE中顯示的值,但應用程序未執行該屬性,因此斷點未激活。只有您執行代碼才能激活斷點,而不是IDE。如果您要使用調試器來觀看_CookieName字段而不是CookieName屬性,那麼您將會看到您期望看到的內容。

+0

我會測試你說什麼,但_CookieName是私人的,_CookieName的值設置的唯一地方是CookieName獲取prcoedure。 – kaiyaq

+1

是的,那麼?如果您在調試器中觀看'CookieName',那麼調試器必須執行該屬性的getter以獲取值。它不能把它從空氣中抽出來。如果'_CookieName'字段以前沒有設置過,那麼當然屬性getter會將其設置爲「Test」,然後返回該值。這完全如你所料。正如我所說的,你沒有看到斷點的原因是它由調試器執行,而不是由應用程序執行。 – jmcilhinney

+0

啊,今天早上不明白你的答案。重新閱讀後,現在對我來說很有意義。我不知道IDE的這種行爲。謝謝 – kaiyaq