Procedury własności (Visual Basic)
Procedura właściwości to seria instrukcji języka Visual Basic, które manipulują właściwością niestandardową w module, klasie lub strukturze. Procedury właściwości są również znane jako metody dostępu do właściwości.
Program Visual Basic udostępnia następujące procedury właściwości:
- Procedura
Get
zwraca wartość właściwości. Jest on wywoływany podczas uzyskiwania dostępu do właściwości w wyrażeniu. - Procedura
Set
ustawia właściwość na wartość, w tym odwołanie do obiektu. Jest wywoływana podczas przypisywania wartości do właściwości.
Zwykle należy zdefiniować procedury właściwości w parach, używając Get
instrukcji iSet
, ale można zdefiniować tylko procedurę, jeśli właściwość jest tylko do odczytu (Get Statement) lub tylko do zapisu (Set Statement).
Można pominąć procedurę Get
i Set
podczas korzystania z automatycznie zaimplementowanych właściwości. Aby uzyskać więcej informacji, zobacz Automatycznie zaimplementowane właściwości.
Właściwości można definiować w klasach, strukturach i modułach. Właściwości są Public
domyślnie wywoływane z dowolnego miejsca w aplikacji, które mogą uzyskiwać dostęp do kontenera właściwości.
Aby zapoznać się z porównaniem właściwości i zmiennych, zobacz Różnice między właściwościami i zmiennymi w Visual Basic.
Składnia deklaracji
Sama właściwość jest definiowana przez blok kodu ujętego w instrukcję właściwości i instrukcję End Property
. Wewnątrz tego bloku każda procedura właściwości jest wyświetlana jako wewnętrzny blok ujęta w instrukcji deklaracji (Get
lub Set
) i zgodnej End
deklaracji.
Składnia deklarowania właściwości i jej procedur jest następująca:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Element Modifiers
może określać poziom dostępu i informacje dotyczące przeciążenia, zastępowania, udostępniania i cieniowania, a także tego, czy właściwość jest tylko do odczytu, czy tylko do zapisu. Procedura AccessLevel
lub Get
Set
może być dowolnym poziomem, który jest bardziej restrykcyjny niż poziom dostępu określony dla samej właściwości. Aby uzyskać więcej informacji, zobacz Instrukcja właściwości.
Typ danych
Typ danych właściwości i poziom dostępu podmiotu zabezpieczeń są definiowane w instrukcji Property
, a nie w procedurach właściwości. Właściwość może mieć tylko jeden typ danych. Na przykład nie można zdefiniować właściwości do przechowywania Decimal
wartości, ale pobrać Double
wartość.
Poziom dostępu
Można jednak zdefiniować główny poziom dostępu dla właściwości i dodatkowo ograniczyć poziom dostępu w jednej z jego procedur właściwości. Można na przykład zdefiniować Public
właściwość, a następnie zdefiniować procedurę Private Set
. Procedura Get
pozostaje Public
. Poziom dostępu można zmienić tylko w jednej z procedur właściwości i można uczynić go bardziej restrykcyjnym niż poziom dostępu podmiotu zabezpieczeń. Aby uzyskać więcej informacji, zobacz How to: Declare a Property with Mixed Access Levels (Instrukcje: deklarowanie właściwości za pomocą poziomów dostępu mieszanego).
Deklaracja parametru
Każdy parametr jest deklarowany w taki sam sposób, jak w przypadku procedur podrzędnych, z tą różnicą, że mechanizm przekazywania musi mieć wartość ByVal
.
Składnia dla każdego parametru na liście parametrów jest następująca:
[Optional] ByVal [ParamArray] parametername As datatype
Jeśli parametr jest opcjonalny, należy również podać wartość domyślną w ramach jego deklaracji. Składnia określania wartości domyślnej jest następująca:
Optional ByVal parametername As datatype = defaultvalue
Wartości właściwości
W procedurze Get
zwracana wartość jest dostarczana do wyrażenia wywołującego jako wartość właściwości.
W procedurze Set
nowa wartość właściwości jest przekazywana do parametru instrukcji Set
. Jeśli jawnie zadeklarowasz parametr, musisz zadeklarować go przy użyciu tego samego typu danych co właściwość. Jeśli nie deklarujesz parametru, kompilator używa niejawnego parametru Value
do reprezentowania nowej wartości, która ma zostać przypisana do właściwości.
Wywoływanie składni
Procedura właściwości jest wywoływana niejawnie przez odwołanie do właściwości. Należy użyć nazwy właściwości w taki sam sposób, jak nazwa zmiennej, z tą różnicą, że należy podać wartości dla wszystkich argumentów, które nie są opcjonalne, i należy ująć listę argumentów w nawiasach. Jeśli nie podano żadnych argumentów, opcjonalnie można pominąć nawiasy.
Składnia niejawnego wywołania Set
procedury jest następująca:
propertyname[(argumentlist)] = expression
Składnia niejawnego wywołania Get
procedury jest następująca:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Ilustracja deklaracji i wywołania
Poniższa właściwość przechowuje pełną nazwę jako dwie nazwy składników, imię i nazwisko. Podczas odczytywania fullName
Get
kodu wywołującego procedura łączy dwie nazwy składników i zwraca pełną nazwę. Gdy kod wywołujący przypisuje nową pełną nazwę, Set
procedura próbuje podzielić ją na dwie nazwy składowe. Jeśli miejsce nie zostanie odnalezione, zapisze je jako imię.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
W poniższym przykładzie przedstawiono typowe wywołania procedur właściwości programu fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Zobacz też
- z konkretnym obiektem
- Procedury funkcji
- Procedury operatorów
- Parametry i argumenty procedur
- Różnice między właściwościami i zmiennymi w Visual Basic
- Instrukcje: tworzenie właściwości
- Instrukcje: wywoływanie procedury właściwości
- Porady: deklarowanie i wywoływanie właściwości domyślnej w Visual Basic
- Instrukcje: umieszczanie wartości we właściwości
- Instrukcje: pobieranie wartości z właściwości