延迟初始化 就是在第一次使用的时候在 进行类的初始化
public class Student{public Student(){this.Name = "DefaultName";this.Age = 0;Console.WriteLine("Student is init...");}public string Name { get; set; }public int Age { get; set; }}
public static void Main(string[] args){Lazy<Student> stu = new Lazy<Student>();if (!stu.IsValueCreated)Console.WriteLine("Student isn't init!");Console.WriteLine(stu.Value.Name);stu.Value.Name = "Tom"; Console.WriteLine(stu.Value.Name);Console.Read();}
输出:
Student isn't init!
Student is init...
DefaultName
Tom
他是在输出Name属性时才进行初始化的,也就是在第一次使用时才实例化,这样就可以减少不必要的开销。