C# 8.0 搶先看 -- Using declarations

using 變數宣告變得更簡潔。

本篇文章使用環境
開發環境 Visual Studio 2019 Preview 4 (16.0.0 Preview 4)
框架       .NET Core 3.0.100-preview-010184
編譯器    C# 8.0 beta

C# 8.0 在 using 宣告上做了一個讓程式碼更簡潔的改變。在過去,必須要使用 {} 明確地定義出 using 的作用範圍,例如:

 static void Save(IEnumerable<string> lines)
 {
     using (var file = new System.IO.StreamWriter("file1.txt"))
     {
         foreach (string line in lines)
         {
             if (!line.Contains("Second"))
             {
                 file.WriteLine(line);
             }
         }
     }    
 }

在 C# 8.0 後,自動會將其作用範圍視作從宣告處直到該方法結束前,說半天就是它會自動在方法結束前補上 Dispose() 呼叫:

 static void Save(IEnumerable<string> lines)
 {
     using ( var file = new System.IO.StreamWriter("file1.txt"))
     foreach (string line in lines)
     {              
         if (!line.Contains("Second"))
         {
             file.WriteLine(line);
         }
     }
     // 在方法結束前將會呼叫 file.Dispose();
 }

如果需要在非方法結束前的其他位置就呼叫 Dispose 的話,那還是乖乖採用舊方法,明確宣告其作用範圍。