Consulte el código a continuación. Espero que imprima cualquiera de los 10 porque he invocado explícitamente al recolector de basura. Pero siempre obtengo un 0 o 20 como salida. ¿Porqué es eso?C# Destructor no funciona como se esperaba
void Main()
{
Panda[] forest_panda = new Panda[10];
for(int i=0; i<forest_panda.GetLength(0);i++)
{
forest_panda[i]=new Panda("P1");
}
for(int i=0; i<forest_panda.GetLength(0);i++)
{
forest_panda[i]=new Panda("P1");
}
System.GC.Collect();
Console.WriteLine("Total Pandas created is {0}",Panda.population);
}
class Panda
{
public static int population=0;
public string name;
public Panda(string name)
{
this.name = name;
population = population + 1;
}
~Panda()
{
population = population - 1;
}
}
Tenga en cuenta que la clase principal para el que se crea automáticamente por LINQPad (el editor que viene con la "C# 4.0 en una cáscara de nuez" libro). Soy nuevo en C#.
http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx muchos más buenos en la primera página del blog de Raymond ahora mismo. –
¿por qué esperas imprimir 10 cuando creas 20 pandas? –
@Rune FS No esperaba que el segundo conjunto de 10 pandas tuviera GC. pero ahora entiendo que también puede ser GC porque ya no se menciona en el programa cuando llamé a GC. – Manoj