Похоже, что в большинстве случаев компилятор С# мог вызвать Dispose()
автоматически. Как и в большинстве случаев используемого шаблона, вы можете:
public void SomeMethod()
{
...
using (var foo = new Foo())
{
...
}
// Foo isn't use after here (obviously).
...
}
Поскольку foo
не используется (это очень простое обнаружение), и поскольку он не представлен как аргумент другому методу (это предположение, которое применяется ко многим вариантам использования и может быть расширено), компилятор мог бы автоматически и сразу вызывать Dispose()
без разработки, требующей сделать это.
Это означает, что в большинстве случаев using
довольно бесполезен, если компилятор выполняет некоторую умную работу. IDisposable
кажется низкий уровень, достаточный для того, чтобы я принимал во внимание компилятор.
Теперь почему это не делается? Разве это не улучшит характеристики (если разработчики... грязные).