Property — Instrukcja

Deklaruje nazwę właściwości oraz procedury właściwości używane do przechowywania i pobierania wartości właściwości.

Składnia

[ <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 ]

generatora

  • attributelist

    Opcjonalny. Lista atrybutów, które mają zastosowanie do tej właściwości lub GetSet procedury. Zobacz Lista atrybutów.

  • Default

    Opcjonalny. Określa, że ta właściwość jest właściwością domyślną dla klasy lub struktury, na której jest zdefiniowana. Właściwości domyślne muszą akceptować parametry i można je ustawiać i pobierać bez określania nazwy właściwości. Jeśli zadeklarujesz właściwość jako Default, nie można jej użyć Private we właściwości lub w jednej z jej procedur właściwości.

  • accessmodifier

    Opcjonalnie w instrukcji Property i na co najwyżej jednej z instrukcji Get i Set . Może być jednym z następujących elementów:

    Zobacz Poziomy dostępu w Visual Basic.

  • propertymodifiers

    Opcjonalny. Może być jednym z następujących elementów:

  • Shared

    Opcjonalny. Zobacz Udostępnione.

  • Shadows

    Opcjonalny. Zobacz Cienie.

  • ReadOnly

    Opcjonalny. Zobacz ReadOnly.

  • WriteOnly

    Opcjonalny. Zobacz WriteOnly.

  • Iterator

    Opcjonalny. Zobacz Iterator.

  • name

    Wymagany. Nazwa właściwości. Zobacz Nazwy zadeklarowanych elementów.

  • parameterlist

    Opcjonalny. Lista lokalnych nazw zmiennych reprezentujących parametry tej właściwości oraz możliwe dodatkowe parametry Set procedury. Zobacz Lista parametrów.

  • returntype

    Wymagane, jeśli Option Strict ma wartość On. Typ danych wartości zwracanej przez tę właściwość.

  • Implements

    Opcjonalny. Wskazuje, że ta właściwość implementuje co najmniej jedną właściwość zdefiniowaną w interfejsie zaimplementowanym przez tę właściwość zawierającą klasę lub strukturę. Zobacz Implements, instrukcja.

  • implementslist

    Wymagane w przypadku Implements dostarczenia. Lista implementowanych właściwości.

    implementedproperty [ , implementedproperty ... ]

    Każda z nich implementedproperty ma następującą składnię i części:

    interface.definedname

    Element opis
    interface Wymagane. Nazwa interfejsu zaimplementowanego przez tę właściwość zawierającą klasę lub strukturę.
    definedname Wymagany. Nazwa, za pomocą której właściwość jest zdefiniowana w pliku interface.
  • Get

    Opcjonalny. Wymagane, jeśli właściwość jest oznaczona .ReadOnly Uruchamia procedurę właściwości używaną Get do zwracania wartości właściwości. Instrukcja Get nie jest używana z właściwościami implementowanych automatycznie.

  • statements

    Opcjonalny. Blok instrukcji do uruchomienia w ramach Get procedury lub Set .

  • End Get

    Przerywa procedurę Get właściwości.

  • Set

    Opcjonalny. Wymagane, jeśli właściwość jest oznaczona .WriteOnly Uruchamia procedurę Set właściwości używaną do przechowywania wartości właściwości. Instrukcja Set nie jest używana z właściwościami implementowanych automatycznie.

  • End Set

    Przerywa procedurę Set właściwości.

  • End Property

    Przerywa definicję tej właściwości.

Uwagi

Instrukcja Property wprowadza deklarację właściwości. Właściwość może mieć procedurę (tylko do odczytu), procedurę GetSet (tylko zapis) lub obie (odczyt-zapis). Można pominąć procedurę Get i Set podczas korzystania z właściwości implementowanej automatycznie. Aby uzyskać więcej informacji, zobacz Właściwości zaimplementowane automatycznie.

Można używać Property tylko na poziomie klasy. Oznacza to, że kontekst deklaracji dla właściwości musi być klasą, strukturą, modułem lub interfejsem i nie może być plikiem źródłowym, przestrzenią nazw, procedurą lub blokiem. Aby uzyskać więcej informacji, zobacz Konteksty deklaracji i Domyślne poziomy dostępu.

Domyślnie właściwości używają dostępu publicznego. Poziom dostępu właściwości można dostosować za pomocą modyfikatora dostępu w Property instrukcji i opcjonalnie dostosować jedną z procedur właściwości do bardziej restrykcyjnego poziomu dostępu.

Program Visual Basic przekazuje parametr do Set procedury podczas przypisywania właściwości. Jeśli nie podasz parametru dla Setprogramu , zintegrowane środowisko projektowe (IDE) używa niejawnego parametru o nazwie value. Ten parametr zawiera wartość, która ma zostać przypisana do właściwości. Zazwyczaj ta wartość jest przechowywana w prywatnej zmiennej lokalnej i zwracana za każdym razem, gdy Get zostanie wywołana procedura.

Reguły

  • Mieszane poziomy dostępu. Jeśli definiujesz właściwość odczytu i zapisu, możesz opcjonalnie określić inny poziom dostępu dla Get procedury lub Set , ale nie dla obu tych metod. Jeśli to zrobisz, poziom dostępu do procedury musi być bardziej restrykcyjny niż poziom dostępu właściwości. Jeśli na przykład właściwość jest zadeklarowana Friend, można zadeklarować procedurę SetPrivate, ale nie Public.

    Jeśli definiujesz ReadOnly właściwość lub WriteOnly , pojedyncza procedura właściwości (Get lub Set, odpowiednio) reprezentuje całą właściwość. Nie można zadeklarować innego poziomu dostępu dla takiej procedury, ponieważ spowoduje to ustawienie dwóch poziomów dostępu dla właściwości.

  • Zwracany typ. Instrukcja Property może zadeklarować typ danych zwracanej wartości. Można określić dowolny typ danych lub nazwę wyliczenia, struktury, klasy lub interfejsu.

    Jeśli nie określisz returntypeparametru , właściwość zwraca wartość Object.

  • Implementacji. Jeśli ta właściwość używa słowa kluczowego Implements , zawierająca klasę lub strukturę musi mieć instrukcję Implements bezpośrednio po jej Class instrukcji lub Structure . Instrukcja Implements musi zawierać każdy interfejs określony w pliku implementslist. Jednak nazwa, za pomocą której interfejs definiuje Property element (in definedname) nie musi być taka sama jak nazwa tej właściwości (w pliku name).

Zachowanie

  • Zwracanie z procedury właściwości. Get Gdy procedura or Set powróci do kodu wywołującego, wykonanie będzie kontynuowane z instrukcją po instrukcji, która ją wywołała.

    Instrukcje Exit Property i Return powodują natychmiastowe wyjście z procedury właściwości. Dowolna liczba instrukcji Exit Property i Return może być wyświetlana w dowolnym miejscu procedury i można mieszać Exit Property i Return instrukcje.

  • Wartość zwracana. Aby zwrócić wartość z Get procedury, możesz przypisać wartość do nazwy właściwości lub dołączyć ją w instrukcji Return . Poniższy przykład przypisuje wartość zwracaną do nazwy quoteForTheDay właściwości, a następnie używa Exit Property instrukcji do zwrócenia.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    Jeśli nie Exit Property przypiszesz wartości do name, Get procedura zwraca wartość domyślną dla typu danych właściwości.

    Instrukcja Return w tym samym czasie przypisuje wartość zwracaną Get przez procedurę i zamyka procedurę. W poniższym przykładzie pokazano to.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Przykład

Poniższy przykład deklaruje właściwość w klasie.

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

Zobacz też