Come C#, o altri linguaggi per quella materia, di gestire l'allocazione di memoria (e la memoria de-allocazione) tra questi due scenari:C esempio # classe con metodo statico vs utilizzo della memoria classe statica
1.) Un metodo su viene invocata una classe statica.
public Program {
Foo foo = Loader.load();
}
public static Loader {
public static Foo load() {
return new Foo();
}
}
2.) Un metodo viene richiamato su un'istanza, che quindi non rientra nell'ambito.
public Program {
Foo foo = new Loader().load();
}
public Loader {
public Foo load() {
return new Foo();
}
}
Suppongo che la classe statica è caricato, e rimane, in memoria; mentre l'istanza di classe soccombe alla raccolta dei rifiuti al tempo libero di C#. Ci sono dei pro o contro in questi due paradigmi? C'è mai un momento in cui si ha una classe che non ha mai bisogno di essere istanziata (cioè una sorta di caricatore di risorse o factory), ma si usa comunque la seconda metodologia per sfruttare la garbage collection?
La parte importante della mia domanda è se il primo paradigma, pur essendo concettualmente corretto in alcune circostanze, possa rimanere senza memoria.
Il secondo esempio non mi sembra corretto. La chiamata a un metodo statico richiede che sia preceduta dal nome della classe. per esempio. 'Loader.Load()' & ** not ** 'nuovo Loader(). Load()' – shahkalpesh
Hai ragione, Shah - non hai bisogno di un'istanza per chiamare un metodo statico. Questo è un po 'il punto :) –
ah, voi ragazzi avete ragione, grazie, l'ho riscritto per ottenere la carne della domanda che stavo tentando di chiedere. – jtb