Udostępnij za pośrednictwem


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 fullNameGet 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ż