Достижимость объектов в C#
Сборщик мусора ориентируется не на время создания объекта, а на то, можно ли до него добраться из текущего кода.
Достижимость означает: существует ли переменная, поле или элемент коллекции, через которые программа может обратиться к объекту. Пока хотя бы одна такая ссылка есть, объект остается в памяти.
Две переменные могут указывать на один объект:
Counter? first = new Counter();
Counter second = first;
second.value = 5;
Console.WriteLine(first.value);
class Counter {
public int value;
}
Объект достижим и через first, и через
second. Если обнулить одну ссылку,
вторая все еще держит объект:
first = null;
Console.WriteLine(second.value);
Создайте класс Note с полем text,
две переменные на один объект, измените текст
через вторую и выведите через первую.
Обнулите одну из ссылок и убедитесь, что объект все еще доступен через вторую переменную.