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 Set
programu , 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 Property
Set
. 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 lubSet
, 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 zadeklarowanaFriend
, można zadeklarować proceduręSet
Private
, ale niePublic
.Jeśli definiujesz
WriteOnly
właściwość,Set
procedura reprezentuje całą właściwość. Nie można zadeklarować innego poziomu dostępu dlaSet
elementu , 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.Set
procedury właściwości mogą zwracać przy użyciu instrukcjiReturn lub instrukcji Exit.Instrukcje
Exit Property
iReturn
powodują natychmiastowe wyjście z procedury właściwości. Dowolna liczba instrukcjiExit Property
iReturn
może być wyświetlana w dowolnym miejscu procedury i można mieszaćExit Property
iReturn
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