1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //初始化 Lazy 类的新实例 6 //当延迟初始化发生时,将使用指定的初始化函数和初始化模式 7 // 参数: 8 // valueFactory: 9 // 调用用于在需要时生成延迟初始化值的委托。10 //11 // isThreadSafe:12 // 若要使此实例可同时由多个线程使用,则为 true;若要使此实例一次只能由一个线程使用,则为 false。13 Lazylazy = new Lazy (() =>14 {15 return DateTime.Now.ToLongTimeString();16 }, true);17 18 //false(还未查询Value)19 Console.WriteLine(lazy.IsValueCreated);20 Console.WriteLine(lazy.Value);21 //true(已经查询Value)22 Console.WriteLine(lazy.IsValueCreated);23 Thread.Sleep(3000);24 //3秒后,Value值不变25 Console.WriteLine(lazy.Value);26 27 string str = null;28 //如果str未被初始化则使用"String1."初始化str29 LazyInitializer.EnsureInitialized(ref str, () => "String1.");30 //输出String1.31 Console.WriteLine(str);32 33 //str已经初始化过,不会再被初始化,因此不会变为"String2."34 LazyInitializer.EnsureInitialized(ref str, () => "String2.");35 //输出String1.36 Console.WriteLine(str);37 38 Console.ReadLine();39 }40 }