Newsgroup: it.comp.lang.visual-basic
Titolo: byval e byref

ciao a tutti
come da oggetto, cosa si intende con byval e byref?
grazie
shadow

Stavo per segnare un gran gol a S.Siro alla Juventus quando shadow mi 
interrompeva dicendo:

si intende la modalità di passaggio di parametri a subroutine. Con byval 
i parametri vengono passati per valore, cioè all'uscita dalla sub il 
valore è come era in ingresso; invece byref indica che vengono passati 
per riferimento, ovvero qualunque modifica fatta su di essi dalla sub è 
effettiva.
Prego
-- 
Per conttarmi in pvt togliere NOSPAM o in alternativa con
MSN Messenger: rocco7man chiocciola 
hotmail.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Frase Mitiche:
"Colpo partita: triplo filotto reale ritornato con pallino."
(Rag. Ugo Fantozzi in Fantozzi)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Aggiungo anche un:
;-) WLF ;-) Forza Milan e Manchester United!
CIAO

effettiva.
tnx! ma quale sarebbe la necessita di passarli byval? :)

tnx! ma quale sarebbe la necessita di passarli byval? :)
Senza entrare nel dettaglio (che senno' mi tocca cominciare a parlarti
di puntatori) spero ti basti sapere che passando una varuabile byref
qualsiasi modifica venga fatta alla variabile all'interno della
funzione che hai chiamato influenza la variabile che hai passato;
viceversa, se passi una variabile byval, allora la variabile passata
manterrà il valore prima del passaggio, puoi cioè farne quel che vuoi
all'interno della funzione chiamata senza causare effetti collaterali
all'esterno.
Tipicamente, il passaggio byref si usa a) quando tu _vuoi_ che la
variabile passata sia influenzata, oppure b) quando hai intenzione di
risparmiare in performance e memoria, dato che per sua natura il
passaggio byref è quasi sempre molto più efficiente (comunque, occhio
a quanto detto sopra).
--
Ciao!
Luca Menegotto


Personalmente uso, quando non ho necessità di performance particolari, o 
necessità di modificare le variabili, sempre il passaggio ByVal.
Credo sia più una forma di tranquillità mentale, il fatto di sapere che ciò 
che passo non verrà modificato dalla function/sub, e che se viene 
modificato, comunque la modifica sarà su un clone e non sulla variabile 
originale.
Credo che anche quanto a riusabilità del codice, il passaggio ByVal dia una 
maggiore sensazione di costruire codice a mattoncini Lego.
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

 tnx! ma quale sarebbe la necessita di passarli byval? :)
No, quale sarebbe la necessitą di passarli ByRef!
Passa tutto ByVal e se ti viene la tentazione di usare un ByRef trasforma il
parametro in classe e passalo ByVal ;)
Ti risparmierai un bel po' di contorsioni mentali.
Ciao


wrote:

Viva la buona programmazione :P
Non č un risparmio di contorsione mentale, semplicemente basterebbe
stare un poco attenti a quello che si fa!

Ti risparmierai un bel po' di contorsioni mentali.
Scusa, stai scherzando o sei serio?
--
Ciao!
Luca Menegotto

 Scusa, stai scherzando o sei serio?
secondo me ha ecceduto nella sintesi ;-)
-- 
ciao, hal

 secondo me ha ecceduto nella sintesi ;-)
Beh, VB6 non permette passaggio ByVal per array e Type ma per il resto vado
via liscio di ByVal e sono felice di questa scelta :)
Ciao

via liscio di ByVal e sono felice di questa scelta :)
La mia domanda non voleva essere polemica, è che volevo darti la
risposta corretta a seconda di come andava interpretata
l'affermazione! :)
Allora, per come la vedo io (che vengo dal C e C++, per cui forse è
una deformazione):
1) un parametro non si modifica mai, a meno che non sia previsto come
parametro di output; Io preferisco prevedere la restituzione del
parametro, piuttosto che la modifica diretta.
2) il passaggio per riferimento è stramaledettamente efficiente, visto
che si tratta di passare un puntatore piuttosto che un'istanza
completa di un certo tipo, e evita di appesantire inutilmente lo
stack.
3) l'unica eccezione a 2) è costituita dall'insieme di dati di
dimensioni pari o inferiori a 4 bytes, visto che in quel caso è molto
più efficiente passare il parametro per valore, a meno che non vi
siano necessità contrarie.
--
Ciao!
Luca Menegotto

 trasforma il parametro in classe e passalo ByVal ;)
Piano piano Zanna mi sta diventando sempre più simpatico.


 Piano piano Zanna mi sta diventando sempre piů simpatico.
Cioč finora ti sono stato antipatico? ;)
Ciao