Я работаю на С#, и я довольно слабо разбираюсь в использовании блоков using
для объявления объектов, которые реализуют IDisposable
, которые вы, по-видимому, всегда должны делать. Тем не менее, я не вижу легкого способа узнать, когда я ускользаю. Visual Studio, похоже, никак не указывает на это (я просто что-то пропустил?). Должен ли я просто проверять помощь каждый раз, когда я заявляю что-либо, и постепенно создавать энциклопедическую память, для которой объекты и которые не являются одноразовыми? Кажется ненужным, болезненным и подверженным ошибкам.
Как вы справляетесь с этим?
EDIT:
Посмотрев на боковой панели связанных вопросов, я нашел еще один вопрос, который дал понять, что Dispose()
должен быть вызван финализатором объекта в любом случае. Поэтому, даже если вы никогда не называете это самим, это должно произойти в конечном итоге, то есть у вас не будет утечки памяти, если вы не используете using
(что, я полагаю, меня действительно беспокоило все это время). Единственное предостережение в том, что сборщик мусора не знает, сколько лишней памяти удерживается объектом как неуправляемый материал, поэтому у него не будет четкого представления о том, сколько памяти будет освобождено, собирая объект. Это приведет к менее идеальной, чем обычно, производительности сборщиком мусора.
Короче говоря, это не конец света, если я пропущу using
. Я просто хочу, чтобы что-то создало хотя бы предупреждение для него.
(Off-topic: почему нет специальной уценки для ссылки на другой вопрос?)
EDIT:
Хорошо, отлично, прекратите требовать. Это супер-пупер с полным огнем драматический-бурундук - уровень важный для вызова Dispose()
, или мы все умрем.
Теперь. Учитывая это, почему это так просто? черт возьми, почему это даже разрешено? сделать это неправильно? Вы должны пойти по пути, чтобы сделать все правильно. Выполнение этого, как и все остальное, приводит к армагеддону (по-видимому). Так много для инкапсуляции, да?
[Отключается, отвращение]