可能重复:
在 C# 中嵌套 using 语句
我非常喜欢using
C# 中的声明。我发现这个:
using (var foo = new ObjectWhichMustBeDisposed())
{
other code
}
...比这更具可读性:
var foo = new ObjectiWhichMustBeDisposed();
try
{
other code
}
finally
{
foo.Dispose();
}
它不仅更具可读性,还可以防止在语句之后(即在它被释放之后)意外使用foo
变量,而在第二个示例中,可以在它被释放之后使用。using
foo
但是,一个问题using
是,如果要创建大量一次性对象,它往往会导致非常嵌套的代码。例如:
using (var foo = new ObjectWhichMustBeDisposed())
{
using (var bar = new ObjectWhichMustBeDisposed())
{
other code
}
}
如果两个对象属于同一类型,则可以将它们组合成一个using
语句,如下所示:
using (var foo = new ObjectWhichMustBeDisposed(),
bar = new ObjectWhichMustBeDisposed())
{
other code
}
但是,如果对象不是同一类型,那么这将不起作用。
我的问题是是否可以达到这样的类似目的:
using (var foo = new ObjectWhichMustBeDisposed())
using (var bar = new OtherObjectWhichMustBeDisposed())
{
other code
}
在这种情况下,第一次使用后没有大括号(因此不需要缩进代码)。这编译,我假设这就像一个if
没有大括号的语句一样工作 - 即它将使用下一个语句(using
在这种情况下是第二个)作为它的“主体”。
谁能确认这是否正确?(使用语句的描述没有帮助)。