多个 using 语句和一个块
可以使用多个嵌套的 using
语句,而无需添加多级嵌套大括号。例如:
using (var input = File.OpenRead("input.txt"))
{
using (var output = File.OpenWrite("output.txt"))
{
input.CopyTo(output);
} // output is disposed here
} // input is disposed here
另一种方法是写:
using (var input = File.OpenRead("input.txt"))
using (var output = File.OpenWrite("output.txt"))
{
input.CopyTo(output);
} // output and then input are disposed here
这与第一个例子完全相同。
注意: 嵌套的 using
语句可能会触发 Microsoft Code Analysis 规则 CS2002 (请参阅此答案以获得说明)并生成警告。如链接答案中所述,嵌套 using
语句通常是安全的。
当 using
语句中的类型属于同一类型时,你可以用逗号分隔它们并仅指定类型一次(尽管这种情况并不常见):
using (FileStream file = File.Open("MyFile.txt"), file2 = File.Open("MyFile2.txt"))
{
}
当类型具有共享层次结构时,也可以使用此选项:
using (Stream file = File.Open("MyFile.txt"), data = new MemoryStream())
{
}
var
关键字不能用于上面的示例中。将发生编译错误。当声明的变量具有来自不同层次结构的类型时,即使逗号分隔的声明也不起作用。