我真的很烦恼必须using
在 C# 中嵌套块。它不优雅,占用大量空间。在某些情况下,这似乎是不可避免的,因为我需要声明不同数据类型的变量,但似乎应该可以简化单一类型的情况。我所说的“单一类型案例”是指串联声明多个相同类型的变量。这是我正在谈论的一个例子:
class Program
{
static void Main(string[] args)
{
using (A a = new A("a"), b = new A("b"))
{
}
}
class A : IDisposable
{
string n = null;
public A(string name)
{
n = name;
Console.WriteLine(String.Format("Creating {0}", n));
}
public void Dispose()
{
Console.WriteLine(String.Format("Disposing {0}", n));
}
}
}
我希望它工作的方式a
是在之前构建b
,并且b
在之前处置a
。不幸的是,C# 规范中似乎没有关于它应该如何实际发生的任何方向。似乎微软的 C# 编译器是这样对待它的,因为这是运行上述程序的输出:
Creating a
Creating b
Disposing b
Disposing a
但是,我无法确保这是确定性行为。有人可以确认或反驳这个序列是确定性的想法吗?参考文献会很棒。显然,如果它容易损坏(无证等),它可能没有用,但这是一件好事。
已经有一个关于确定性处理的类似问题,它讨论了多类型的情况,我知道除了聪明的语法技巧之外没有真正的解决方案。无论如何,那里的大多数答案都没有抓住重点。我的问题只是关于单一类型的案例,以及这种处置是否是确定性和可靠的。谢谢。