У меня есть таймер в С#, который выполняет некоторый код внутри него. Внутри кода я использую несколько временных объектов.
-
Если у меня есть что-то вроде
Foo o = new Foo();
внутри метода, значит ли это, что каждый раз, когда таймер тикает, я создаю новый объект и новую ссылку на этот объект? -
Если у меня есть
string foo = null
, а затем я просто поместил что-то временное в foo, это то же самое, что и выше? -
Разве сборщик мусора когда-либо удаляет объект, а ссылка или объекты постоянно создаются и остаются в памяти?
-
Если я просто объявляю
Foo o;
и не указываю его на какой-либо экземпляр, не является ли это, когда метод заканчивается? -
Если я хочу, чтобы все было удалено, что это лучший способ сделать это:
- с оператором using внутри метода
- вызывая метод dispose в конце
- поместив
Foo o;
вне метода таймера и просто сделайте присваиваниеo = new Foo()
внутри, так что указатель на объект будет удален после завершения метода, сборщик мусора удалит объект.