Piccola info sulla dichiarazione di variabili

mercoledì 03 dicembre 2008 - 00.42

Francesco141288 Profilo | Newbie

Ciao a tutti,
avrei bisogno di risolvere un piccolo dubbio sulla dichiarazione delle variabili. Cioè, se io dichiaro una qualsiasi variabile all'interno dell'evento tick di un timer per esempio, è un approccio efficiente? Nel senso, mi dimensiona la varibile ogni volta che esegue l'evento oppure una volta sola?

Cteniza Profilo | Guru

Variabile locale, il suo "scope" è il blocco di istruzioni dove è stata dichiarata

Francesco141288 Profilo | Newbie

Sisi quello lo so, ma io chiedevo se metterla, per esempio, in un evento tick di un timer, è un approccio efficiente.
Nel senso, mi rialloca la variabile ad ogni tick oppure ne alloca un altra con lo stesso identificatore occupando sempre più memoria?

delama77 Profilo | Junior Member

>Sisi quello lo so, ma io chiedevo se metterla, per esempio, in
>un evento tick di un timer, è un approccio efficiente.
>Nel senso, mi rialloca la variabile ad ogni tick oppure ne alloca
>un altra con lo stesso identificatore occupando sempre più memoria?


Quando dichiaramo una variabile a livello di routine ( subroutine o funzione ), ogni volta che utilizziamo la funzione le variabili in esse dichiarate - al momento stesso della chiamata - vengono poste al loro valore predefinito ( che corrisponde allo zero per le variabili numeriche ed alla stringa vuota per le variabili stringa ).

Ci sono casi in cui è utile conservare il valore di una o più variabili tra le chiamate ad una funzione ed evitare che esse vengano riazzerate ad ogni chiamata della funzione stessa.
Per ottenere tale effetto, cioè conservare il valore di una variabile tra più chiamate ad una funzione, basta sostituire alla parola chiave Dim la parola chiave Static.
In questo modo facciamo sì che la variabile Numero non venga riazzerata ogni volta che la routine in cui è dichiarata viene eseguita.

Spero che la risposta ti possa servire

Ciao

Alessandra


sanbiz Profilo | Senior Member

>Sisi quello lo so, ma io chiedevo se metterla, per esempio, in
>un evento tick di un timer, è un approccio efficiente.
Non vedo particolari contro-indicazioni anche se "efficiente" è molto generico.

>Nel senso, mi rialloca la variabile ad ogni tick oppure ne alloca
>un altra con lo stesso identificatore occupando sempre più memoria?

Come già specificato l'area di visibilità di una variabile è circoscritta a livello del blocco in cui viene dichiarata, in questo caso è relativa all'evento tick dell'oggetto timer.
Come per ogni altra funzione, nel momento in cui si esce dal proprio blocco di visibilità, la variabile viene "automaticamente" deallocata. Quindi la risposta alla tua domanda è "NO la memoria non crescerà ad ogni tick".

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5