1 class Program2 {3 Static voidMain (string[] args)4 {5 //Initializes a new instance of the Lazy class6 //When deferred initialization occurs, the specified initialization function and initialization mode are used7 //Parameters:8 //valuefactory:9 //called to generate a delegate that generates a deferred initialization value when needed. Ten // One //IsThreadSafe: A //True if this instance can be used by more than one thread at a time, false if the instance can be used by only one thread at a time. -Lazy<string> lazy =NewLazy<string> (() = - { the returnDateTime.Now.ToLongTimeString (); -},true); - - //False (value not yet queried) + Console.WriteLine (lazy. isvaluecreated); - Console.WriteLine (lazy. Value); + //true (value already queried) A Console.WriteLine (lazy. isvaluecreated); atThread.Sleep ( the); - //value does not change after 3 seconds - Console.WriteLine (lazy. Value); - - stringstr =NULL; - //use "String1." If Str is not initialized. Initialize STR inLazyinitializer.ensureinitialized (refSTR, () ="String1."); - //output String1. to Console.WriteLine (str); + - //Str has been initialized, is no longer initialized, and therefore does not become "String2." theLazyinitializer.ensureinitialized (refSTR, () ="String2."); * //output String1. $ Console.WriteLine (str);Panax Notoginseng - console.readline (); the } +}
C # 's Lazy and Lazyinitializer