using关键字可以支持IDisposable模式,可以在后面的圆括号中获得自由,这些自由作为局部变量,它们的作用范围限制在大括号限定的范围内。
我们看一下例子
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace DisposeAndUsing
7 {
8 class Program
9 {
10 public class A : IDisposable
11 {
12 private bool disposed = false;
13 private void Dispose(bool disposing)
14 {
15 if (!disposed)
16 {
17 if (disposing)
18 {
19
20 }
21 Console.WriteLine("Cleaning up object");
22 disposed = true;
23 }
24 }
25
26 public void Dispose()
27 {
28 Dispose(true);
29 GC.SuppressFinalize(this);
30 }
31
32 public void DoSomething()
33 {
34 Console.WriteLine("A.SoSomething()");
35 }
36
37 ~A()
38 {
39 Console.WriteLine("Finalizing");
40 Dispose(false);
41 }
42 }
43
44 static void Main(string[] args)
45 {
46 using (A a = new A())
47 {
48 a.DoSomething();
49 }
50
51 using (A a = new A(), b = new A())
52 {
53 a.DoSomething();
54 b.DoSomething();
55 }
56 Console.ReadLine();
57 }
58 }
59 }
using语句要求进程获得的所有资源能隐式的转换为IDisposable.这意味着它们必须实行IDisposable接口,否则会得到一个编译警告。