これは一連の記事のパート 2 です。
C# 8 で導入された 1 つの優れた拡張機能は、破棄可能なオブジェクトを使用するコードを簡素化するのに役立ちます。
たとえば、次のことを考えてみてください:
class MyDisposableClass : IDisposable { public void Dispose() { Console.WriteLine("Disposing"); } public void Run() { Console.WriteLine("Running"); } }
C# 8 より前では、使い捨てオブジェクト (IDisposable を実装するもの) を使用する場合は、通常、次のように using ブロックを使用していました。
private static void Process() { using (var x = new MyDisposableClass()) { x.Run(); } }
using ブロックの最後にある Dispose() メソッドが自動的に呼び出されます。
C# 8 では、using ブロックの代わりに using 宣言 を使用できます。 :
private static void Process() { using var x = new MyDisposableClass(); x.Run(); }
前のコードで、using 宣言を使用すると、{} を追加する必要がないことに注意してください。 using 宣言を使用する場合、Dispose() メソッドは Process() の最後に自動的に呼び出されます 方法。ブロックを使用するアプローチと同様に、Process() 内で例外が発生した場合 メソッドの次に Dispose() まだ呼び出されます。
宣言を使用すると、中かっこが少なくなるため、コードがすっきりします {} インデントが 1 レベル少なくなります。
たとえば、複数の用途がある場合:
private static void Process() { using (var x = new MyDisposableClass()) using (var y = new MyDisposableClass()) using (var z = new MyDisposableClass()) { x.Run(); y.Run(); z.Run(); } }
これを C# 8 で次のように書き直すことができます。
private static void Process() { using var x = new MyDisposableClass(); using var y = new MyDisposableClass(); using var z = new MyDisposableClass(); x.Run(); y.Run(); z.Run(); }
C# の知識のギャップを埋めたい場合は、Pluralsight の C# のヒントとトラップのトレーニング コースを必ずチェックしてください。無料トライアルを開始してください。