VB.net автоматическое свойство - только для чтения? - PullRequest
5 голосов
/ 31 января 2011


возможно (и как) сделать свойство только для чтения в VB 2010?

Public Class Foo  
  Public Property Value As Integer  
  Public Sub New()  
      _Value = 123
  End Sub  
End Class  

Проблема в том, что пользователи могут писать в собственность.Thanx

Ответы [ 4 ]

7 голосов
/ 02 мая 2016

Теперь поддерживается в VB14 (Visual Studio 2015 и более поздних версиях):

Public Class Foo  
    Public ReadOnly Property Value As Integer = 123
End Class  

См. https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-VB-14#read-only-auto-properties

В более ранних версиях вам необходимо создать вспомогательное поле.

4 голосов
/ 31 января 2011

Нет, VB.Net не поддерживает автоматические свойства только для чтения. См. Эту проблему MS Connect по этой причине (в частности, комментарий Джонатана Анеджи).

2 голосов
/ 31 января 2011

Нет, невозможно .Вам нужно будет создать явное вспомогательное поле.

0 голосов
/ 23 мая 2014

thinkthing,

вы можете создать фрагмент кода для добавления универсального свойства.

http://msdn.microsoft.com/en-us/library/ms165392(v=vs.90).aspx

Помните, что Visual Studio изменила базовый способ построениясвойства, с набором get, и теперь требуется только одна строка с понятным набором get.Полный геттер и сеттер могут быть построены, если вам нужна встроенная логика.Я отсылаю вас сюда: http://msdn.microsoft.com/en-us/library/dd293589.aspx

и здесь, к обсуждению SO, касающемуся аналогичного обсуждения: Использование фрагментов для создания свойств класса в VB.net.prop только дает "property () как" Что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...