延遲初始化 ?就是在第一次使用的時候在 進行類的初始化
?
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屬性時才進行初始化的,也就是在第一次使用時才實例化,這樣就可以減少不必要的開銷。
?