Newsgroup: it.comp.lang.visual-basic
Titolo: Property???

Scusate la domanda forse stupida ma fatta in buona fede!!!
Ma a che servono le Property Get e Let???
Io non le avevo mai usate!!!Cioe' spiegatemi la "bellezza" di creare 2
metodi x fare in modo che il contenuto di una variabile non venga modificato
da operazioni avvenute nella dll...
Non č meglio passare il valore a una variabile dichiarata in una funzione???
Cioe' giuro che non capisco xche il mio capo si danni l'anima quando nei
programmi non uso le property... anche xche usandole aumento il rischio
d'errore nello scrivere le variabili stesse!!!
Non so se avete capito... spero di si!!!
Provo con un esempio...
Se scrivo:
Public property let prova (pippo as string) as string
    Lpippo = pippo
end property
Public property get prova as string
    prova = Lpippo
end property
(Spero di aver scritto bene)
E se scrivessi:
Public function prova (pippo as string) as string
    istruzioni
    prova = risultato
end function
Mi dite la differenza???
GRAZIE!!!

 Mi dite la differenza???
Piccola confusione...
Le property get/let o set NON sono sostitutive delle sub/function (o nel
caso di una classe dei metodi).
Le due cose hanno scopi diversi.
Lo scopo principale di una property è quello di assegnare (let o set) una
variabile privata (quindi -interna-) di una classe o di restituirne il
valore (get) eseguendo nel contempo delle operazioni, per es. di
validazione. Altro scopo dell'acoppiata get/let è quello di limitare
l'accesso dall'esterno della classe a operazioni di sola lettura o sola
scrittura, cosa che non sarebbe ottenibile con una variabile pubblica.
Nel secondo caso usi una function che -incidentalmente-  legge il valore
della variabile mentre esegue qualcosa...
Ora, è chiaro che la tua function potrebbe essere esattamente equivalente ad
una property get interna alla classe, ma in questo caso dovresti spiegarmi l
a ragione per utilizzare un metodo della classe per avere il valore di una
property anzichè una -appunto- property...
Per spiegarmi meglio, estenderò il tuo esempio:
- Caso 1
Nella classe usi semplicemente una :
Public Pippo as string
Questo farà sì che dall'esetrno sia possibile accedere alla Pippo in
lettura/scrittura in qualunque punto dell'applicativo e non eseguirà alcun
controllo di alcun genere.
=> Sconsigliabile se non in situazioni MOLTO semplici e per classi comunque
interne all'applicativo.
- Caso 2
Nella classe usi
Private sPippo as string
Property Let Pippo(sNewPippo as string)
    IF bLaSituazioneLoConsente
        sPippo = sNewPippo
        emagarigiachecisiamoeseguiamoqualcosaltrodiutileinquestasituazione
    Else
        eseguoqualcosaltro
    Endif
end property
Property Get Pippo () as string
    Pippo=sPippo
end property
In questo caso esegui una validazione della variabile -prima- di assegnarla
e non permetti all'applicazine chiamante di danneggiarne il valore con
chiamate "fuori luogo".
Nota anche che potresti benissimo esporre solo la property let rendendo la
proprietà di sola scrittura o solo la property get rendendola di sola
lettura...
=> Buona norma in tutte le classi.
- Caso 3
Private sPippo as string
Public Function Pippo() as string
    ...
    pippo =spippo
end function
In questo caso implementi un -metodo- della classe e NON una property,
ovvero una funzionalità della classe che -incidentalmente- restituisce il
valore di una property... capisci da sola che è ben diverso...
Spero di essere stato chiaro...
ciao
ugo

 ha scritto nel messaggio
news:9on2t1$u0b$1...@pegasus.tiscalinet.it...



ehm... ribadisco: fai un po' di confusione fra "strumenti" informatici
diversi...
ciao
ugo