Существует два вида resource_acquisition
, поддерживаемых using
согласно спецификациям : local_variable_declaration
и expression
.
Я считаю, что местное использование в C# 8 является ярлыком для local_variable_declaration
формы, а не expression
формы согласно предложению языковой функции , где вы можете увидеть:
Ограничения использования объявления:
Должен иметь инициализатор для каждого декларатора.
Это также дает возможность использовать более одного ресурса в одном операторе using согласно состояниям спецификаций языка:
Когда resource_acquisition
принимает форму local_variable_declaration
, можно получить несколько ресурсов данного типа.
Таким образом, вы можете сделать:
using IDisposable a = Foo1();
using IDisposable a = Foo1(), b = Foo2(), c = Foo3();
Возможно, , что языковая команда может добавить поддержку форм expression
в будущих версиях, но на данный момент expression
пока не поддерживается.