Lazy<>泛型

View Code
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //这里调用的是MyLazy的构造函数
 6             //只有使用Value的时候调用的才是Person的构造函数
 7             //实际应用时只有非常消耗内存资源
 8             //或者其他非托管资源的类才值得用Lazy<T>
 9             MyLazy<Person> person = new MyLazy<Person>();
10 
11             int i = 5;
12             int j = 6;
13             int w = i + j;
14             ///p.Hello();
15             person.Value.Hello();//Lazy的Value用来获得延迟创建的对象
16             person.Value.Hello();
17             Console.ReadKey();
18         }
19     }
20 
21     class MyLazy<T> where T:new()
22     {
23         private T instance;
24 
25         public T Value
26         {
27             get
28             {
29                 //判断实例是否创建
30                 if (instance == null)
31                 {
32                     //如果没创建,则先创建实例
33                     instance = new T();
34                 }
35                 return instance;
36             }
37         }
38     }
39 
40     class Person
41     {
42         public Person()
43         {
44             Console.WriteLine("构造了");
45         }
46 
47         public void Hello()
48         {
49             Console.WriteLine("你好");
50         }
51     }

Lazy<>的作用:在真正使用对象时(调用Lazy对象的Value属性时,才会调用传给Lazy对象的类型的构造函数创建要使用的对象),对象才会被创建

posted @ 2013-03-17 20:29  Big.Eagle  阅读(196)  评论(0)    收藏  举报