Только для чтения в C # против VB.NET - PullRequest
5 голосов
/ 09 марта 2012

Кажется, что ключевые слова VB.NET и C # readonly имеют некоторые различия ...

Скажем, свойство ReadOnly в C # может быть назначено в некоторых условиях, но в VB.NET - никогда?

Ответы [ 2 ]

10 голосов
/ 09 марта 2012

В C # только для чтения является модификатором поля . Он указывает, что поле может быть назначено только при инициализации или в конструкторе.

VB.NET - то же самое, за исключением того, что ReadOnly также является модификатором свойства . Он указывает, что свойство не может быть назначено, т. Е. Оно является получателем.

3 голосов
/ 09 марта 2012

В 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

Значение свойства не может быть изменено из внешнего класса.

...