快速业务通道

在Framework4.0中如何实现延迟加载

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-14

延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。

先来看一下在Framework4.0中如何实现延迟加载。

Framework4.0提供了一个包装类 Lazy,可以轻松的实现延迟加载。

  1. ///这行代码表明:要创建一个延迟加载的字符串对象s  
  2. ///原型为LazyT> 对象名=new LazyT>(FunT>)  
  3. ///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法  
  4. ///如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型  
  5. Lazystring> s = new Lazystring>(TestLazy.GetString);  

本例中TestLazy.GetString()方法如下示:

  1. public class TestLazy    
  2. {    
  3. public static string GetString()    
  4. {    
  5. return DateTime.Now.ToLongTimeString();    
  6. }   
  7. }  

可以通过IsValueCreated属性来确定对象是否已创建,通过Value属性来获取当前对象的值。

  1. Console.WriteLine(s.IsValueCreated);//返回False  
  2. Console.WriteLine(s.IsValueCreated);//返回True 

下面经出完整代码,以供测试:

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. ///这行代码表明:要创建一个延迟加载的字符串对象s  
  6. ///原型为Lazy 对象名=new Lazy(Fun)  
  7. ///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法  
  8. ///如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型  
  9. Lazy s = new Lazy(TestLazy.GetString);  
  10. Console.WriteLine(s.IsValueCreated);//返回False  
  11. Console.WriteLine(s.IsValueCreated);//返回True  
  12. }  
  13. }  
  14. public class TestLazy  
  15. {  
  16. public static string GetString()  
  17. {  
  18. return DateTime.Now.ToLongTimeString();  
  19. }  
  20. }  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号