Come e dove istanziare la classe?

lunedì 18 luglio 2005 - 21.15

temerario Profilo | Junior Member

Salve,


in una pagina *.aspx.cs utilizzo in quasi ogni metodo
associato ad un evento della mia *.aspx alcuni metodi contenuti in una
classe da me implementata.
Mi conviene istanziare la classe a livello globale
e quindi nella dichiarazione delle variabili scrivere


1) MyClass x = new Myclass();


oppure in ogni metodo utilizzare


2) x = (new MyClass()).metodo


o altro?


Spero di essere stato chiaro.


In ogni caso, il nuovo oggetto di MyClass creato quando viene distrutto
in entrambi i casi(nel caso 1 all'uscita dalla pagina e nel caso 2
all'uscita dal metodo?


Vorrei per favore qualche chiarimento in merito e/o qualche
suggerimento.
GRAZIE

LudovicoVan Profilo | Junior Member

Ciao temerario,

>in una pagina *.aspx.cs utilizzo in quasi ogni metodo
>associato ad un evento della mia *.aspx alcuni metodi contenuti
>in una classe da me implementata.
>Mi conviene istanziare la classe a livello globale

Se, come è probabile visto lo scenario, hai una classe contenente semplicemente metodi di supporto, potresti riscrivere la classe con soli membri statici e non dovresti istanziare alcunché.

Se invece ti occorresse davvero istanziare la classe, dovresti farlo nella singola pagina (anche perchè non so immaginare uno scenario in cui la classe deve essere istanziata ma... può essere istanziata al livello globale).


> In ogni caso, il nuovo oggetto di MyClass creato quando viene distrutto

In generale, quando non esistono più riferimenti a un oggetto, l'oggetto viene (entro un tempo breve ma non prevedibile) distrutto dal Garbage Collector e la memoria rilasciata.

Quindi, se metti l'oggetto in una variabile globale, la variabile (che contiene il riferimento) esiste per tutto il ciclo di vita dell'applicazione e l'oggetto viene rilasciato solo alla chiusura dell'applicazione stessa (cioè quando il processo asp_net viene terminato)... sempre a meno che nel frattempo in quella variabile non ci metti qualcos'altro, nel qual caso il riferimento all'oggetto originale sarebbe perso e l'oggetto verrebbe distrutto.

Analogamente, se metti un oggetto in una variabile locale, l'oggetto corrispondente esiste fino a che esiste il riferimento, per cui viene rilasciato alla chiusura del metodo... oppure prima, se nella variabile metti qualcos'altro.


Spero di averti dato un'idea. -LV

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