Set — Instrukcja (Visual Basic)

Deklaruje procedurę Set właściwości używaną do przypisywania wartości do właściwości.

Składnia

[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]  
    [ statements ]  
End Set  

generatora

attributelist
Opcjonalny. Zobacz Lista atrybutów.

accessmodifier
Opcjonalnie dla co najwyżej jednej z instrukcji Get i Set w tej właściwości. Może być jednym z następujących elementów:

Zobacz Poziomy dostępu w Visual Basic.

value
Opcjonalny. Parametr zawierający nową wartość właściwości. Jeśli nie podano (jeśli lista parametrów nie jest obecna lub jest pusta), zdefiniowany jest niejawny parametr o nazwie value . Typ danych tego niejawnego parametru to typ danych właściwości, w której zadeklarowana jest ta Set instrukcja.

datatype
Wymagane, jeśli value jest obecny i Option Strict ma wartość On. Nie można go przedstawić, jeśli value nie zostanie podany. Typ danych parametru value . Określony typ danych musi być taki sam jak typ danych właściwości, w której zadeklarowana jest ta Set instrukcja.

statements
Opcjonalny. Co najmniej jedna instrukcja uruchamiana po wywołaniu Set procedury właściwości.

End Set
Wymagany. Przerywa definicję Set procedury właściwości.

Uwagi

Każda właściwość musi mieć procedurę Set właściwości, chyba że właściwość jest oznaczona .ReadOnly Procedura Set służy do ustawiania wartości właściwości.

Program Visual Basic automatycznie wywołuje procedurę właściwości Set , gdy instrukcja przypisania udostępnia wartość, która ma być przechowywana we właściwości.

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. 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.

Treść deklaracji właściwości może zawierać tylko właściwości Get i procedury między instrukcją Właściwości a instrukcją End PropertySet . Nie może przechowywać niczego innego niż te procedury. W szczególności nie może przechowywać bieżącej wartości właściwości. Tę wartość należy przechowywać poza właściwością, ponieważ jeśli przechowujesz ją wewnątrz jednej z procedur właściwości, inna procedura właściwości nie może uzyskać do niej dostępu. Zwykle metoda polega na przechowywaniu wartości w zmiennej prywatnej zadeklarowanej na tym samym poziomie co właściwość. Należy zdefiniować procedurę Set wewnątrz właściwości, do której ma zastosowanie.

Procedura Set jest domyślnie ustawiona na poziom dostępu jego właściwości zawierającej, chyba że zostanie użyta accessmodifier w instrukcji Set .

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 WriteOnly właściwość, Set procedura reprezentuje całą właściwość. Nie można zadeklarować innego poziomu dostępu dla Setelementu , ponieważ spowoduje to ustawienie dwóch poziomów dostępu dla właściwości .

Zachowanie

  • Zwracanie z procedury właściwości. Set Gdy procedura powróci do kodu wywołującego, wykonanie będzie kontynuowane zgodnie z instrukcją, która dostarczyła wartość do przechowywania.

    Setprocedury właściwości mogą zwracać przy użyciu instrukcjiReturn lub instrukcji Exit.

    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.

Przykład

W poniższym przykładzie użyto instrukcji Set , aby ustawić wartość właściwości.

Class propClass
    Private propVal As Integer
    Property Prop1() As Integer
        Get
            Return propVal
        End Get
        Set(ByVal value As Integer)
            propVal = value
        End Set
    End Property
End Class

Zobacz też