2012-03-09 94 views
3

看來,VB.NET和C#readonly關鍵詞有一定的差異...只讀在C#VS在VB.NET

說,在C#中可以在一定條件下被分配一個只讀屬性,但在VB.NET - 從不?

+0

你不會在C#屬性上應用'readonly'關鍵字 - 你只是不給該屬性一個setter。如果你可以在這裏包含一些示例代碼,你會發現它真的很有用。 – 2012-03-09 10:58:53

+0

@JonSkeet,我同意,這個問題試圖比較「青蛙」和「親愛的」 – serhio 2012-03-09 11:05:24

+0

問題根本上不清楚*它試圖比較什麼*。請閱讀http://tinyurl.com/so-hints – 2012-03-09 11:11:18

回答

9

在C#中,readonly字段修飾符。它指定該字段只能在初始化或構造函數中分配。

VB.NET是一樣的,除了ReadOnly也是屬性修飾符。它指定該屬性不能分配給 - 即它是一個吸氣劑。

+1

不僅在構造函數中,而且在聲明時) – serhio 2012-03-09 11:00:26

+0

@serhio - 我的監督 - 現在修復:) – 2012-03-09 11:05:34

+0

是的VB.net喜歡爲不同的事物... – squelos 2012-03-09 11:08:03

3

在VB.NET中,只讀屬性通常創建爲只讀外部類。 如果要設置此屬性,可以通過更改相關的局部變量輕鬆地從類內部執行此操作。

因此,例如在VB 2010

Public ReadOnly Property SomeVariable() As String 

或更早的版本,

Private _SomeVariable As String 
Public ReadOnly Property SomeVariable() As String 
    Get 
     Return _SomeVariable 
    End Get 
End Property 

你可以將它設置你的類裏面爲:

_SomeVariable = somevalue 

的屬性值不能從外部類進行修改。