Istruzione Set (Visual Basic)
Consente di dichiarare una routine della proprietà Set utilizzata per assegnare un valore a una proprietà.
[ <attributelist> ] [ accessmodifier ] Set (ByVal value [ As datatype ])
[ statements ]
End Set
Parti
attributelist
Facoltativo. Vedere Elenco degli attributi.accessmodifier
Facoltativo per al massimo una delle istruzioni Get e Set in questa proprietà e può essere ad esempio uno dei seguenti:value
Obbligatoria. Parametro contenente il nuovo valore della proprietà.datatype
Obbligatoria se Option Strict è On. Tipo di dati del parametro value. È necessario che sia uguale al tipo di dati della proprietà nella quale viene dichiarata l'istruzione Set.statements
Facoltativo. Una o più istruzioni che vengono eseguite quando viene chiamata la routine della proprietà Set.End Set
Obbligatoria. Consente di terminare la definizione della routine della proprietà Set.
Note
Ogni proprietà deve avere una routine della proprietà Set a meno che la proprietà stessa non sia contrassegnata come ReadOnly. La routine Set viene utilizzata per impostare il valore della proprietà.
Quando un'istruzione di assegnazione fornisce un valore da memorizzare nella proprietà, in Visual Basic viene automaticamente chiamata la routine Set della proprietà.
In Visual Basic un parametro viene passato alla routine Set durante le assegnazioni di proprietà. Se non si fornisce un parametro per Set, un parametro implicito denominato value verrà utilizzato dall'ambiente di sviluppo integrato. Il parametro contiene il valore da assegnare alla proprietà. In genere tale valore viene memorizzato in una variabile locale privata e viene restituito ogni volta che viene chiamata la routine Get.
All'interno del corpo della dichiarazione di proprietà possono essere contenute solo le routine Get e Set della proprietà fra le istruzioni Istruzione Property e End Property. Non è possibile memorizzare altro all'infuori di queste routine. In particolare, non è possibile memorizzare il valore corrente della proprietà. Questo valore va memorizzarlo al di fuori della proprietà. Se lo si inserisce all'interno di una delle routine infatti, l'altra non potrà accedervi. In genere questo valore viene memorizzato in una variabile Private (Visual Basic) dichiarata allo stesso livello della proprietà. È necessario definire una routine Set all'interno della proprietà a cui viene applicata.
Per impostazione predefinita, la routine Set utilizza il livello di accesso della proprietà che la contiene a meno che non si utilizzi accessmodifier nell'istruzione Set.
Regole
Livelli di accesso misto. Se si definisce una proprietà di lettura/scrittura, è eventualmente possibile specificare un livello di accesso diverso per la routine Get o Set, ma non per entrambe. Il livello di accesso della routine deve essere più restrittivo rispetto a quello della proprietà. Ad esempio, se la proprietà è dichiarata Friend, è possibile dichiarare la procedura Set come Private, ma non come Public.
Se si definisce una proprietà WriteOnly, la routine Set rappresenta l'intera proprietà. Non è possibile dichiarare un livello di accesso diverso per Set, poiché in tal caso verrebbero impostati due livelli di accesso per la proprietà.
Comportamento
Chiusura di una routine della proprietà. Quando la routine Set torna al codice chiamante, l'esecuzione continua seguendo l'istruzione che ha fornito il valore da archiviare.
Le routine della proprietà Set possono essere chiuse tramite Istruzione Return (Visual Basic) o Istruzione Exit (Visual Basic).
Le istruzioni Exit Property e Return consentono di uscire immediatamente da una routine di proprietà. Qualsiasi numero delle istruzioni Exit Property e Return può essere visualizzato in un punto qualsiasi della procedura ed è possibile mescolare le istruzioni Exit Property e Return.
Esempio
Nell'esempio seguente l'istruzione Set viene utilizzata per impostare il valore di una proprietà.
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