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 Lazy<String> lazy = new Lazy<String>(() =>
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."初始化str
29 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 }