国产午夜精品一区二区三区不-国产午夜精品一区二区三区不卡-国产午夜精品一区二区三区极品-国产午夜精品一区二区三区老-国产午夜精品一区二区三区漫-国产午夜精品一区二区三区嫩草

聊城網站制作公司,聊城網站建設,聊城網站優化,聊城網絡公司,聊城網站推廣,聊城網站運營,聊城網絡運營,聊城搜索引擎優化,聊城網頁設計,聊城網站制作
 
 
公司擁有五年的網站建設經驗,專業網站制作,推廣及網站優化,有大量優秀客戶案例
網站建設 | 設為首頁 | 加入收藏 | 聯系我們  
公告:熱烈慶祝聊城精英網絡2010版官方網站改版成功!
當前位置 :首頁 > 網頁知識  

在Framework4.0中如何實現延遲加載

http://www.zjgjyh.cn   2011-8-31 8:59:34 來源:聊城精英網絡 作者:精英網絡   人氣:

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. }  

下面再用一個例子,演示延遲加載:

在這個例子中,使用了BlogUser對象,該對象包含多個Article對象,當加載BlogUser對象時,Article對象并不加載,當需要使用Article對象時,才加載。

  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. BlogUser blogUser = new BlogUser(1);  
  6. Console.WriteLine("blogUser has been initialized");  
  7. {  
  8. Console.WriteLine(article.Title);}  
  9. }  
  10. }  
  11. public class BlogUser  
  12. {  
  13. public int Id { getprivate set; }  
  14. public Lazy> Articles { getprivate set; }  
  15. public BlogUser(int id)  
  16. {  
  17. this.Id = id;  
  18. Articles =new Lazy>(()=>ArticleServices.GetArticesByID(id));  
  19. Console.WriteLine("BlogUser Initializer");  
  20. }  
  21. }  
  22. public class Article  
  23. {  
  24. public int Id { getset; }  
  25. public string Title{get;set;}  
  26. public DateTime PublishDate { getset;}  
  27. public class ArticleServices  
  28. {  
  29. public static List GetArticesByID(int blogUserID)  
  30. {  
  31. List articles = new List {  
  32. new Article{Id=1,Title="Lazy Load",PublishDate=DateTime.Parse("2011-4-20")},  
  33. new Article{Id=2,Title="Delegate",PublishDate=DateTime.Parse("2011-4-21")},  
  34. new Article{Id=3,Title="Event",PublishDate=DateTime.Parse("2011-4-22")},  
  35. new Article{Id=4,Title="Thread",PublishDate=DateTime.Parse("2011-4-23}  
  36. };  
  37. Console.WriteLine("Article Initalizer");  
  38. return articles;  
  39. }  

運行結果如圖示:

運行結果

最后說一下,延遲加載主要應用場景:

當創建一個對象的子對象開銷比較大時,而且有可能在程序中用不到這個子對象,那么可以考慮用延遲加載的方式來創建子對象。另外一種情況就是當程序一啟動時,需要創建多個對象,但僅有幾個對象需要立即使用,這樣就可以將一些不必要的初始化工作延遲到使用時,這樣可以非常有效的提高程序的啟動速度。

這種技術在ORM框架得到了廣泛應用,也并非C#獨有的,比如Java里的Hibernate框架也使用了這一技術。

專業設計團隊
滿足您的各種設計要求
實力程序開發團隊
為您定制各種程序模塊
后臺管理高效安全
方便更新上傳網站資料
全球高速訪問
無盲區、定制異地備份
專業客服團隊
解決一切使用難題
贈送大容量空間郵箱
免費優化推廣
   
關于我們 | 工作機會 | 付款方式 | 網站制作 | 網頁制作 | 網頁設計 | 網絡公司 | 聯系我們 | 網站地圖
版權所有:聊城精英網絡科技有限公司 © 2005-2010 All Rights Reserved.
咨詢專線:0635-6950368 技術專線:15192175820 在線QQ:312817927 1485871644
地址:聊城市閘口科技市場 郵編:252000 蘇ICP備10112026號
主站蜘蛛池模板: 蜜桃日本免费MV免费播放 | 久久精品国产曰本波多野结衣国产婷婷一区二区三区 | 亚洲视频在线观看一区二区 | 国产精品久久成人网站 | 精品国产yw在线观看 | 亚洲v国产v天堂a无码二区 | 欧美不卡一区二区三区 | 亚洲av无码成人精品区在线播放 | 亚洲中文精品久久久久久 | 无码精品久久久久久人妻中字 | 亚洲第一页呦女 | 国产精品污WWW一区二区三区 | 蜜桃影片在线播放网站免费观看 | 国产真实乱人偷精品人妻图 | 伊人蕉久中文字幕无码专区 | 日韩一级特黄毛片在线看 | 中文字幕日本αv一区二区 中文字幕日本aⅴ天堂在线 | 国产成人啪精品视频免费网站 | 人妻在卧室被老板疯狂进入 | 国产精品三级在线观看无码 | 日韩综合视频一区 | 麻豆91av| 一本一道AⅤ无码中文字幕 一本一道av无码中文字幕 | 久久久久久国产精品免费免费 | 99久久国产综合精品五月天 | 亚洲av无码一区二区二三区 | 日韩福利在线观看 | 无码中文字幕在线观看 | 熟妇的荡欲色综合亚洲图片 | 日韩黄色一级片 | 日韩av午夜中文字幕 | 美女高潮久久久久 | 97人妻精品 | 无码不卡av | 精品一区二区久 | 午夜无码国产精品有码无码av在线播放亚洲精品国产va在 | 无码精品a∨在线观看十八禁软件 | 久久精品国产精油按摩 | 亚洲欧美校园春色 | 欧洲亚洲色视频综合在线 | 四房色播网址 |