Newsgroup: it.comp.lang.visual-basic
Titolo: Propietà Pubblica o Variabile Pubblica?

Ciao a tutti,
se da un Form voglio accedere ad una "Variabile" pubblica di un'altra form,
questa "Variabile" voi la dichiarate come variabile (public var as string)
oppure come proprietà della form? Pesa di più una proprietà o una variabile?
E poi se avete in una classe/form una proprietà, per accedere ad essa usate
la proprietà stessa oppure il membro?
es:
Private m_sPNota As String * 10
Public Property Get PrimaNota() As String
    PrimaNota = m_sPNota
End Property
Public Property Let PrimaNota(ByVal NewPrimaNota As String)
    m_sPNota = NewPrimaNota
End Property
Ho sempre usato Accedere alla Proprietà, ma ultimamente mi sono chiesto:
perchè devo usare PrimaNota (che prima deve essere "riempita" dal contenuto
di m_sPNota) e non direttamente il membro m_sPNota?
Grazie a tutti
Ciao
oZ


Incapsulazione del codice.
Vedi sopra.
(Continua così che vai bene...)
ciao
ugo

 di m_sPNota) e non direttamente il membro m_sPNota?
Non ha molto senso avere una copia privata della variabile esposta se la usi
solo come alias interno, a parte le considerazioni dei puristi
sull'incapsulamento. Tanto vale usare una variabile pubblica...
Ciao, Silv:o)

 
Mi sembra di ricordare che in un form/classe non sia possibile
dichiarare variabili pubbliche.
Se in un form/classe dichiaro: Public MiaVar As Tipo
in realta' quello non e' altro che un metodo piu' veloce per dichiarare
una proprieta' di nome MiaVar, ma in effetti VB implementa
implicitamente una coppia di funzioni get e let per accedervi,
sicche' l'istruzione:
Public MiaVar As Tipo
e' in tutto equivalente a:
Private privMiaVar As Tipo
Public Property Get MiaVar() As Tipo
   MiaVar = privMiaVar
End Property
Public Property Let MiaVar(Nuovo As Tipo)
   privMiaVar = MiaVar
End Property
Attendo conferme o smentite
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/leggiminews.html


Confermo.
Ma è chiaro che, dal momento che sono implicite, non esiste la possibilità
di intervenire sulla coppia  di Property per ampliarne/modificarne il
funzionamento.
Resta una bella differenza con la possibilità di impiego offerta dalla
coppia di Properties esplicite!
ciao
ugo

Attendo conferme o smentite
Infatti è quello che realmente avviene. In particolare, quando
ti riferisci alla variabile da una altro modulo vengono invocate
le rispettive routine property. Se invece accedi alla variabile
dall'interno del modulo di form in cui è definita accedi direttamente
ad essa senza invocare le routine (a meno di non utilizzare la
sintassi me.pubblicVar).
Cordialmente,
Danilo!

Grazie a Tutti per le risposte!!!
Siete molto preparati...
Ma voi dove leggete tutte queste notizie?
In the Net oppure su libri redatti da Ingegneri_Termo_Nucleari (che con il
Vb hanno progettato tutte le spedizioni dell'Apollo sulla luna)??
A parte gli scherzi... dove avete letto che
il "VB implementa implicitamente una coppia di funzioni get e let per
accedervi"???
Ciao a tutti
oZ

 ha scritto nel messaggio
news:9m0he0$bpcab$1...@ID-77238.news.dfncis.de...

Tanto per cominciare mi viene in mente il mitico Balena.....
 A proposito, qualcuno sa se l'edizione economica e' tagliata rispetto al
'librone'?
Ciao
---------------------------------
Roberto Mazzoli
Consulenza Informatica
r_mazzoli(tanto e' gia' stato spammato)
hotmail.com
---------------------------------
Visita il sito comune del newsgroup!
http://www.it-lang-vb.net


Temo che con Vb sia stato progettato solo Apollo 13...    :)
(nonostante difenda a spada tratta Vb dagli attacchi di Roal :-) )
ciao
ugo

Scusate, avevo cambiato nome per mandare in giro degli annunci (oZ non mi
sembra formale...:))
Ciao
oZ

Sia-Softwork ha scritto:

Ho controllato, c'e' scritto su MSDN.
Vai in Documentazione di Visual Basic\Utilizzo di Visual Basic\
   Manuale del programmatore\Potenzialita' di Visual Basic\
   Programmazione ad oggetti\Aggiunta di prorieta' e metodi
   in una classe\Differenze tra routine Property e variabili pubbliche
Leggi la nota a fondo pagina.
