多個 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
關鍵字不能用於上面的示例中。將發生編譯錯誤。當宣告的變數具有來自不同層次結構的型別時,即使逗號分隔的宣告也不起作用。