¿Cómo C#, o en otros idiomas, para el caso, gestionar la asignación de memoria (y la memoria de asignación) entre estas dos situaciones:C instancia # clase con métodos estáticos vs uso de memoria clase estática
1.) Un método de se invoca una clase estática.
public Program {
Foo foo = Loader.load();
}
public static Loader {
public static Foo load() {
return new Foo();
}
}
2.) Se invoca un método en una instancia, que luego cae fuera del alcance.
public Program {
Foo foo = new Loader().load();
}
public Loader {
public Foo load() {
return new Foo();
}
}
Supongo que la clase estática está cargada y permanece en la memoria; mientras que la instancia de clase sucumbe a la recolección de basura en el ocio de C#. ¿Hay algún pros o contras para estos dos paradigmas? ¿Hay alguna vez en que tenga una clase que nunca necesite ser instanciada (es decir, algún tipo de cargador de recursos o fábrica), pero utiliza la segunda metodología de todos modos para aprovechar la recolección de basura?
La parte importante de mi pregunta es si o no el primer paradigma, mientras que ser conceptualmente correcto en algunas circunstancias, pueden sufrir de aferrarse a la memoria innecesariamente.
El segundo ejemplo me parece incorrecto. Llamar a un método estático requiere un prefijo con nombre de clase. p.ej. 'Loader.Load()' & ** not ** 'new Loader(). Load()' – shahkalpesh
Tienes razón, Shah: no necesitas una instancia para llamar a un método estático. Ese es el punto :) –
ah, ustedes tienen razón, gracias, lo he modificado para llegar a la esencia de la pregunta que estaba tratando de hacer. – jtb