private static void TraditionalUsingStatement() { using (var r = new AResource()) { r.UseIt(); } // r.Dispose is called }
private static void NewMultipleUsingDeclarations() { using var r1 = new AResource(); using var r2 = new AResource(); r1.UseIt(); r2.UseIt(); }
} // resource is disposed here private static void UsingDeclarationWithScope() { { using var r1 = new AResource(); r1.UseIt(); } // r1 is disposed here! Console.WriteLine("r1 is already disposed"); }
private static void TraditionalMultipleUsingStatements2() { using (var r1 = new AResource()) using (var r2 = new AResource()) { r1.UseIt(); r2.UseIt(); } }
private static void TraditionalUsingStatementExpanded() { var r = new AResource(); try { r.UseIt(); } finally { r.Dispose(); } }
private static void NewWithUsingDeclaration() { using var r = new AResource(); r.UseIt(); }