static void Main(string[] args) { SomeType instance = new SomeType(); instance = null; for (int i = 0; i < 10; i++) { Thread.Sleep(1000); GC.Collect(); Console.WriteLine("\t\tmain {0} iteration", i); } }
static void Main() { Instance = new SomeType(); Instance = null; // Освобождение объекта (потеря ссылки). GC.Collect(); // Отработает деструктор ~SomeType() // Delay. Console.ReadKey(); Instance = null; // Освобождение объекта (потеря ссылки). GC.Collect(); // Отработает деструктор ~SomeType() // Delay. Console.ReadKey(); // Отработает деструктор ~SomeType() }
static void Main() { SomeType instance = new SomeType(); // optimize + GC.Collect(); // Отработает деструктор ~SomeType() // Delay. Console.ReadKey(); GC.Collect(); // Не отработает деструктор ~SomeType() так как // ссылка на объект держится в статическом поле и // объект считается доступным. // Delay. Console.ReadKey(); // Отработает деструктор ~SomeType() }