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对象的类型的构造函数创建要使用的对象),对象才会被创建

浙公网安备 33010602011771号