使用懒对象,new的时候不实例化,等到使用的时候再实例化
基本使用方法例
internal class Program
{
static void Main(string[] args)
{
Lazy<Big> lazyBig = new Lazy<Big>();//new的时候不创建 使用的再创建
Console.WriteLine("对象是否创建" + lazyBig.IsValueCreated);
lazyBig.Value.Test();
Console.WriteLine("对象是否创建"+lazyBig.IsValueCreated);
Console.ReadLine();
}
}
public class Big
{
public Big() { }
public void Test()
{
Console.WriteLine("Test....");
}
}
输出的结果是:
对象是否创建False
Test....
对象是否创建True
所以当调用方法的时候实例才被创建,这样延迟加载的方式让程序效率更高
如果要实现带参的构造函数,可以使用委托的方式
internal class Program
{
static void Main(string[] args)
{
Lazy<Big> lazyBig = new Lazy<Big>(()=>new Big(100));
lazyBig.Value.Test();
Console.ReadLine();
}
}
public class Big
{
public int ID { get; set; }
public Big(int id)
{
this.ID = id;
}
public void Test()
{
Console.WriteLine("ID:"+this.ID.ToString());
}
}