Lazy<T>クラス
* GOFのデザインパターンのProxyパターン(使用するときまで生成を遅らせる)を実現することができる
* Lazy => 必要になるまでやらない
使用用途およびその例
* 重い処理、急に使用する必要がない処理に有効
【例】
* 重い画面(View)の表示
* 画像の表示
サンプル
TargetClass.cs
public class TargetClass
{
public TargetClass()
{
Console.WriteLine("TargetClass Created");
}
}
Program.cs
static void Main(string[] args)
{
Console.WriteLine("Start");
var lazyObject = new Lazy<TargetClass>();
Console.WriteLine("new Lazy<TargetClass>");
Console.WriteLine("IsValueCreated = {0}", lazyObject.IsValueCreated);
TargetClass obj = lazyObject.Value;
Console.WriteLine("IsValueCreated = {0}", lazyObject.IsValueCreated);
Console.WriteLine("End");
Console.Read();
}
Program.cs
Start
new Lazy<TargetClass>
IsValueCreated = False
TargetClass Created
IsValueCreated = True
End