Framework4.0提供了一个包装类 Lazy<T>,可以轻松的实现延迟加载。
📅 2026/7/4 23:33:18
👁️ 阅读次数
📝 编程学习
///这行代码表明:要创建一个延迟加载的字符串对象s
///原型为Lazy<T> 对象名=new Lazy<T>(Fun<T>)
///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法
///如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型
Lazy<string> s = new Lazy<string>(TestLazy.GetString);
本例中TestLazy.GetString()方法如下示:
public class TestLazy
{
public static string GetString()
{
return DateTime.Now.ToLongTimeString();
}
}
可以通过IsValueCreated属性来确定对象是否已创建,通过Value属性来获取当前对象的值。
Console.WriteLine(s.IsValueCreated);//返回False
Console.WriteLine(s.Value); //返回s的当前值
Console.WriteLine(s.IsValueCreated);//返回True
下面经出完整代码,以供测试
字符串对象延迟加载完整示例
下面再用一个例子,演示延迟加载。
在这个例子中,使用了BlogUser对象,该对象包含多个Article对象,当加载BlogUser对象时,Article对象并不加载,当需要使用Article对象时,才加载。
包含子对象的延迟加载
运行结果如图示:
编程学习
技术分享
实战经验