(Я даже не знаю, имеет ли смысл мой вопрос вообще, это просто то, что я не понимаю и немного крутится у меня в голове)
Рассмотрим следующий класс:
public class MyClass
{
private int _myVar;
public void DoSomething()
{
// ...Do something...
_myVar = 1;
System.Console.WriteLine("Inside");
}
}
И используя этот класс следующим образом:
public class Test
{
public static void Main()
{
// ...Some code...
System.Console.WriteLine("Before");
// No assignment to a variable.
new MyClass().DoSomething();
// ...Some other code...
System.Console.WriteLine("After");
}
}
(Ideone)
Выше, я создаю экземпляр класса, не присваивая его переменной.
Я боюсь, что сборщик мусора может удалить мой экземпляр слишком рано.
Мое наивное понимание сборки мусора:
"Удалите объект, как только никакие ссылки не указывают на него".
Поскольку я создаю свой экземпляр, не присваивая его переменной, это условие будет истинным. Очевидно, что код работает правильно, поэтому мое предположение кажется ложным.
Может кто-нибудь дать мне информацию, которую мне не хватает?
Подводя итог, мой вопрос:
(Почему/почему нет) безопасно ли создавать экземпляр класса, не присваивая его переменной или return
ing?
т.е. это
new MyClass().DoSomething();
и
var c = new MyClass();
c.DoSomething();
то же самое из точки сбора мусора?