PDA

View Full Version : [VB.NET] Proprietà


max12
08-07-2008, 18:08
Salve, ho delle domande da rivolgere sulle proprietà. Ho capito che esse servono a rendere pubblici campi privati, ma non comprendo la sua sintassi:
Property [Nome della proprieta']([Eventuali parametri]) As [Tipo]
Get

Return
End Get
Set(ByVal Value As [Tipo])

End Set
End Property
cosa sono get e set e a cosa servono? hanno funzioni diverse?
vi ringrazio in anticipo

RaouL_BennetH
08-07-2008, 18:41
ti rispondo con un esempio:



Private cognome As String
Private nome As String

Public Property GetCognome() As String
Get
return cognome
End Get
Set (ByVal Value As String)
cognome = value
End Set
End Property

'uguale anche per nome



In questo caso abbiamo usato get e set, che sono i metodi accessori e mutatori della proprietà, in pratica dicono:

Get = Prendi 'cognome'
Set = assegna il valore preso con get a 'cognome'

N.B.: Set potrebbe anche non assegnare nessun valore a cognome, in questo caso avremo un membro in sola lettura.

Per un esempio pratico, supponiamo che tu abbia la tua classe Persona, ed un form con due caselle di testo:

In un qualsiasi evento del form, puoi dire che:



Dim personaSingola As new Persona()
personaSingola.GetCognome = casellaDiTesto1.Text
personaSingola.GetNome = casellaDiTesto2.Text

'in pratica, abbiamo preso il valore dalle caselle di testo (get) e lo abbiamo
'assegnato ai membri della classe Persona (set) per cognome e nome

*Quest'ultima frase non è proprio correttissima, sarebbe meglio parlare
'in termini di oggetto personaSingola (istanza della classe Persona)



Spero di non aver detto stravaccate :D

Strat
08-07-2008, 18:51
Le proprietà in linea di massima servono come interfaccia da e verso l'esterno di variabili private di una classe.

Tutto parte dal fatto che se hai una variabile privata naturalmente essa non è accessibile direttamente.

Se non esistessero le proprietà faresti un metodo per valorizzare tale proprietà e uno per "restitiurla"

Per Esempio:


Private _pippo As Integer

Public Function ValorizzaPippo(ByVal val As Integer) As Boolean
' eventuali controlli
_pippo = val

'se tutto va bene
Return True
End Function

Public Function RestituisciPippo() As Integer
' eventuali controlli
Return _pippo
End Function


Con una sola proprietà metti insieme le due cose


Public Property Pippo()
Get
Return _pippo
End Get
Set(ByVal value)
' eventuali controlli
_pippo = value
End Set
End Property


Quindi:
Get restituisce il valore di _pippo
Set imposta il valore di _pippo

max12
08-07-2008, 22:33
grazie ad entrambi per la risposta
sapete spiegarmi le proprietà di default?