Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Объявляет имя свойства, а процедуры свойств, используемые для хранения и извлечения значения свойства.
Синтаксис
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
Детали
attributelistНеобязательно. Список атрибутов, применяемых к этому свойству или
GetSetпроцедуре. См . список атрибутов.DefaultНеобязательно. Указывает, что это свойство является свойством по умолчанию для класса или структуры, в которой она определена. Свойства по умолчанию должны принимать параметры и могут быть заданы и получены без указания имени свойства. Если вы объявляете свойство как
Default, нельзя использоватьPrivateдля свойства или в любой из его процедур свойств. Примеры и подробные рекомендации см. в статье "Практическое руководство. Объявление и вызов свойства по умолчанию" в Visual Basic.accessmodifierНеобязательный для инструкции
Propertyи по крайней мере один изGetоператоров иSetинструкций. Может применяться один из перечисленных ниже типов.См. раздел Access levels in Visual Basic.
propertymodifiersНеобязательно. Может применяться один из перечисленных ниже типов.
MustOverride OverridesNotOverridable Overrides
SharedНеобязательно. См . раздел "Общий доступ".
ShadowsНеобязательно. См . тени.
ReadOnlyНеобязательно. См. раздел ReadOnly.
WriteOnlyНеобязательно. См. раздел WriteOnly.
IteratorНеобязательно. См . итератор.
nameОбязательный. Имя свойства. См. раздел Declared Element Names.
parameterlistНеобязательно. Список имен локальных переменных, представляющих параметры этого свойства и возможные дополнительные параметры
Setпроцедуры. Параметризованные свойства часто используются для создания индексаторов или свойств по умолчанию, разрешающих доступ к коллекции. См. список параметрови практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic.returntypeОбязательный параметр, если
Option Strictимеет значениеOn. Тип данных значения, возвращаемого этим свойством.ImplementsНеобязательно. Указывает, что это свойство реализует одно или несколько свойств, каждое из которых определено в интерфейсе, реализуемом содержащим классом или структурой этого свойства. См . инструкцию "Реализация".
implementslistЯвляется обязательным, если предоставлен параметр
Implements. Список реализуемых свойств.implementedproperty [ , implementedproperty ... ]Каждый элемент
implementedpropertyимеет перечисленные ниже синтаксис и компоненты.interface.definednameЧасть Description interfaceОбязательный. Имя интерфейса, реализуемого этим свойством, содержащим класс или структуру. definednameОбязательный. Имя, по которому свойство определено в interface.GetНеобязательно. Обязательный, если свойство помечается
ReadOnly. Запускает процедуруGetсвойства, которая используется для возврата значения свойства. ИнструкцияGetне используется с автоматически реализованными свойствами.statementsНеобязательно. Блок инструкций для выполнения в
Getрамках илиSetпроцедуры.End GetЗавершает процедуру
Getсвойства.SetНеобязательно. Обязательный, если свойство помечается
WriteOnly. Запускает процедуруSetсвойства, которая используется для хранения значения свойства. ИнструкцияSetне используется с автоматически реализованными свойствами.End SetЗавершает процедуру
Setсвойства.End PropertyЗавершает определение этого свойства.
Замечания
В Property инструкции представлено объявление свойства. Свойство может иметь процедуру Get (только для чтения), Set процедуру (только запись) или оба (чтение и запись). Вы можете опустить и Get процедуру Set при использовании автоматически реализованного свойства. Дополнительные сведения см. в разделе "Автоматически реализованные свойства".
Можно использовать Property только на уровне класса. Это означает, что контекст объявления для свойства должен быть классом, структурой, модулем или интерфейсом и не может быть исходным файлом, пространством имен, процедурой или блоком. Дополнительные сведения см. в разделе Контексты объявления и уровни доступа по умолчанию.
По умолчанию свойства используют общедоступный доступ. Уровень доступа свойства можно настроить с помощью модификатора доступа в Property инструкции, и при необходимости можно настроить один из его процедур свойств на более строгий уровень доступа. Подробные примеры смешанных уровней доступа см. в разделе "Практическое руководство. Объявление свойства с смешанными уровнями доступа".
Visual Basic передает параметр процедуре Set во время назначений свойств. Если параметр не указан Set, интегрированная среда разработки (IDE) использует неявный параметр с именем value. Этот параметр содержит значение, назначенное свойству. Обычно это значение хранится в частной локальной переменной и возвращается при каждом вызове Get процедуры.
Правила
Уровни смешанного доступа. Если вы определяете свойство чтения и записи, вы можете при необходимости указать другой уровень доступа для процедуры
GetилиSetпроцедуры, но не оба. Если это сделать, уровень доступа к процедуре должен быть более строгим, чем уровень доступа свойства. Например, если свойство объявленоFriend, можно объявить процедуруSetPrivate, но неPublic.Если вы определяете
ReadOnlyсвойство илиWriteOnlyсвойство, одна процедура свойства (GetилиSetсоответственно) представляет все свойство. Нельзя объявить другой уровень доступа для такой процедуры, так как для этого свойства задано два уровня доступа.Тип возвращаемого значения. Инструкция
Propertyможет объявить тип данных возвращаемого значения. Можно указать любой тип данных или имя перечисления, структуры, класса или интерфейса.Если не указано
returntype, свойство возвращаетсяObject.Реализация. Если это свойство использует ключевое
Implementsслово, содержащий класс или структуру, должен иметьImplementsинструкцию сразу после нееClassилиStructureинструкции. ОператорImplementsдолжен содержать каждый интерфейс, указанный вimplementslist. Однако имя, по которому интерфейс определяетProperty(indefinedname), не должен совпадать с именем этого свойства (вname).
Поведение
Возвращается из процедуры свойства.
GetSetКогда или процедура возвращается в вызывающий код, выполнение продолжается с инструкцией, следующей за инструкцией, вызвавающей ее.Exit PropertyИнструкцииReturnвызывают немедленный выход из процедуры свойства. Любое количествоExit PropertyиReturnоператоры могут отображаться в любом месте процедуры, и вы можете смешивать иExit PropertyсмешиватьReturnинструкции.Возвращаемое значение. Чтобы вернуть значение из
Getпроцедуры, можно назначить значение имени свойства или включить его в инструкциюReturn. В следующем примере возвращается возвращаемое значение имениquoteForTheDayсвойства, а затем используетсяExit Propertyинструкция для возврата.Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End PropertyПри использовании
Exit Propertyбез назначения значенияnameпроцедуреGetвозвращается значение по умолчанию для типа данных свойства.Оператор
Returnодновременно назначаетGetвозвращаемое значение процедуры и завершает процедуру. В следующем примере приведена иллюстрация этого.Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get Return quoteValue End Get End Property
Пример
В следующем примере объявляется свойство в классе.
Class Class1
' Define a local variable to store the property value.
Private propertyValue As String
' Define the property.
Public Property Prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return propertyValue
End Get
Set(ByVal value As String)
' The Set property procedure is called when the value
' of a property is modified. The value to be assigned
' is passed in the argument to Set.
propertyValue = value
End Set
End Property
End Class
Параметризованные свойства
В следующем примере показано, как создать параметризованное свойство, которое также называется индексатором, которое позволяет массиву получить доступ к коллекции:
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
Полные примеры использования свойств, включая автоматическую реализацию, смешанные уровни доступа и сценарии проверки, см. в разделе "Процедуры свойств".
См. также
Типы свойств и функции
Сценарии расширенных свойств
- Практическое руководство. Объявление и вызов свойства по умолчанию в Visual Basic
- Практическое руководство. Объявление свойства с смешанными уровнями доступа