Мне нравится оператор using () {} для управления областью действия и для удобства чтения.Вы можете не только создавать объекты, использовать их и аккуратно располагать их, но вы также можете использовать их следующим образом:
Предположим, что myInstance является экземпляром MyClass из некоторого другого места в коде - то есть параметра метода или чего-то еще
using (var t = myInstance) {
t.Foo= "Hello";
t.Bar= "World";
...
}
Определение MyClass:
public class MyClass : IDisposable
{
public string Foo {get; set;}
public string Bar {get; set;}
...
public void Dispose() {}
}
Это делает код более аккуратным и удобочитаемым (я чувствую), и, конечно, его легче набирать.Однако для того, чтобы использовать это широко, вы должны реализовать IDisposable.В этом случае MyClass не нужно обрабатывать что-либо в Dispose, поэтому он пуст.
Мой вопрос: есть ли какой-либо недостаток использования IDisposable таким образом?
Я признателен, что уже есть похожие вопросы по SO, но я не думаю, что они касаются использования IDispose для этой цели (или они относятся к конкретным классам).
РЕДАКТИРОВАТЬ:
ОК, так что, думаю, я немного уточнил, но здесь есть более широкий вопрос.Оператор using - это удобный, очень аккуратный способ определения экземпляра за определенный промежуток времени, и тогда вы можете об этом забыть.Кажется несправедливым, что эта способность должна быть ограничена только IDisposable объектами.Да, есть определенная доля лени не только в создании экземпляра, а затем в установке значения null, но использование блока делает его очень конкретным, какова область действия экземпляра. Почему мне нельзя разрешить делать это с не IDisposable классами?