Я пытаюсь запустить следующий код, используя Mono в Ubuntu 18.10:
public class X
{
public X() { Console.WriteLine("Ctor X"); }
~X() { Console.WriteLine("Finalizer X"); }
private static Y _myY = new Y();
}
public class Y
{
public Y() { Console.WriteLine("Ctor Y"); }
~Y() { Console.WriteLine("Finalizer Y"); }
}
public class Program
{
static void Main()
{
X x = new X();
}
}
Большую часть времени я получаю следующий вывод (всегда в таком порядке, хотя я думал, что со временем он может измениться)время от времени порядок выполнения финализаторов не является детерминированнымна стандартный вывод.
Есть идеи, почему это может произойти?Я подумал, что, возможно, дескриптор стандартного вывода консоли закрыт перед запуском финализатора Y, но это только теория.