Работает так же, как и любое другое задание: =
не заботится о IDisposable
и не делает магии.
Объект, изначально присвоенный переменной, должен будет Dispose
вызываться вручную (или, что еще лучше, с using
), как требуется. Тем не менее, не всегда может быть правильным вызвать Dispose
на этом этапе: кто владеет объектом и контролирует время жизни?
Будет ли пространство памяти, занимаемое старым объектом, просто перезаписываться новым объектом?
Не применяется. Переменные «назовите» объекты. объект сам по себе , а переменная - это переменная, а не объект или «место в памяти». (См. Комментарий Эрика Липперта ниже: предыдущий - это высокоуровневое представление переменных, в то время как комментарий Эрика более точно отражает переменные в реализации C #, духе и терминологии.)
Переменные влияют только на время жизни объекта, поскольку они могут * препятствовать восстановлению объекта (и, таким образом, предотвращают [возможно, в конечном итоге] запуск финализатора). Тем не менее, переменные не управляют объектами семантическое время жизни - объект может быть удален, даже если он не подлежит восстановлению - или устраняет необходимость вызывать Dispose
при необходимости.
Удачного кодирования.
При работе с одноразовыми объектами, выходящими за рамки простых областей видимости, - объектам может быть присвоено множество различных переменных в течение срока их службы! - Я считаю, что лучше всего определить, кто «берет на себя управление», что я комментирую в документации. Если время жизни объекта красиво ограничено областью действия, тогда using
работает хорошо.
* Локальная переменная сама по себе необязательно достаточна для обеспечения высокой доступности объекта, так как возможно, что переменная / присваивание будет агрессивно оптимизирована, если не будет использоваться позже из той же области. Это может поражать такие объекты, как таймеры.