Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Автоматически реализованные свойства позволяют быстро указать свойство класса без необходимости писать код Get и Set свойство. При написании кода для автоматически реализованного свойства компилятор Visual Basic автоматически создает частное поле для хранения переменной свойства в дополнение к созданию связанных Get и Set процедур.
При автоматическом реализации свойств свойство, включая значение по умолчанию, можно объявить в одной строке. В следующем примере показано три объявления свойства.
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()
Автоматически реализованное свойство эквивалентно свойству, для которого значение свойства хранится в частном поле. В следующем примере кода показано автоматически реализованное свойство.
Property Prop2 As String = "Empty"
В следующем примере кода показан эквивалентный код для предыдущего примера автоматически реализованного свойства.
Private _Prop2 As String = "Empty"
Property Prop2 As String
Get
Return _Prop2
End Get
Set(ByVal value As String)
_Prop2 = value
End Set
End Property
В следующем примере кода показана реализация свойств только для чтения:
Class Customer
Public ReadOnly Property Tags As New List(Of String)
Public ReadOnly Property Name As String = ""
Public ReadOnly Property File As String
Sub New(file As String)
Me.File = file
End Sub
End Class
Вы можете назначить свойству выражения инициализации, как показано в примере, или можно присвоить значения свойствам в конструкторе этого типа. Резервные поля свойств только для чтения можно назначить в любое время.
Резервное поле
При объявлении автоматически реализованного свойства Visual Basic автоматически создает скрытое закрытое поле с именем резервного поля , чтобы содержать значение свойства. Имя резервного поля — это автоматически реализованное имя свойства, предшествующее символу подчеркивания (_). Например, если вы объявляете автоматически реализованное свойство с именем ID, поле резервного копирования называется _ID. Если добавить элемент класса также с именем _ID, возникнет конфликт имен, и Visual Basic сообщает об ошибке компилятора.
Резервное поле также имеет следующие характеристики:
модификатор доступа для резервного поля — всегда
Private, даже если само свойство имеет другой уровень доступа, напримерPublic;если свойство помечено как
Shared, резервное поле также будет общим;атрибуты, указанные для свойства, не применяются к резервному полю;
доступ к резервному полю можно получить из кода внутри класса и из средств отладки, например окна контрольных значений. Однако резервное поле не отображается в списке предложений IntelliSense.
Инициализация автоматически реализованного свойства
Любое выражение, которое можно использовать для инициализации поля, допустимо для инициализации автоматически реализованного свойства. При инициализации автоматически реализованного свойства выражение вычисляется и передается в процедуру Set для свойства. В следующих примерах кода показаны некоторые автоматически реализованные свойства, содержащие начальные значения.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
Вы не можете инициализировать автоматически реализованное свойство, которое является членом Interfaceили помеченным MustOverride.
При объявлении автоматически реализованного свойства в качестве члена Structureможно инициализировать автоматически реализованное свойство, если оно помечается как Sharedэлемент.
При объявлении автоматически реализованного свойства в виде массива невозможно указать явные границы массива. Однако можно задать значение с помощью инициализатора массива, как показано в следующих примерах.
Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}
Определения свойств, для которых требуется стандартный синтаксис
Автоматически реализованные свойства удобны и поддерживают множество сценариев программирования. Однако существуют ситуации, в которых нельзя использовать автоматически реализованное свойство и вместо этого использовать стандартный или расширенный синтаксис свойств.
Расширенный синтаксис определения свойства необходимо использовать, если вам нужно выполнить следующие действия.
Добавить код для процедуры
GetилиSetсвойства, например для проверки входящих значений в процедуреSet. Например, вам требуется убедиться, что строка, представляющая номер телефона, содержит необходимое количество цифр перед заданием значения свойства.Указать другой уровень доступа для процедуры
GetиSet. Например, вам может потребоваться сделать процедуруSetPrivate, а процедуруGet—Public.Создать свойства типа
WriteOnly.Использовать параметризованные свойства (включая
Default). Чтобы задать параметр для свойства или указать дополнительные параметры, требуется объявить развернутое свойство процедурыSet.Добавить атрибут в резервное поле или изменить уровень доступа резервного поля.
Добавить XML-комментарии для резервного поля.
Расширение автоматически реализованного свойства
Если необходимо преобразовать автоматически реализованное свойство в развернутое свойство, содержащее или GetSet процедуру, редактор кода Visual Basic может автоматически создавать Get процедуры и SetEnd Property инструкции для свойства. Код создается, если курсор помещается в пустую строку после Property инструкции, введите G (для Get) или S (для Set) и нажмите клавишу ВВОД. Редактор кода Visual Basic автоматически создает процедуру Get или Set для свойств только для чтения и только для записи при нажатии клавиши ВВОД после оператора Property.