C# 8.0的新的using語法——Using declarations
我們在程式碼中經常使用using保障非託管資源的釋放
static void Main(string[] args) { using (var options = Parse(args)) { if (options["verbose"]) { WriteLine("Logging..."); } ... } // options disposed here }
using雖然釋放資料非常有效,但是有的時候會帶來過多的縮排,導致程式碼不好閱讀。
using (var a = ...) { //do something 1 using (var a = ...) { //do something 2 using (var a = ...) { //do something 3 } } }
在C# 8.0中引入了一個新的using語法,可以不用花括號,變量出了其生命週期自動釋放。 該語法功能上有點類似於C++的scoped_ptr,不過也支援async模式下的自動dispose。
static void Main(string[] args) { using var options = Parse(args); if (options["verbose"]) { WriteLine("Logging..."); } } // options disposed here
在新語法的加持下,上面的程式碼就可以簡化如下
using var a = ...; //do something 1 using var b = ...; //do something 2 using var c = ...; //do something 3
看起來舒服多了有沒有。