国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 在Framework4.0中實現(xiàn)延遲加載的實現(xiàn)方法

在Framework4.0中實現(xiàn)延遲加載的實現(xiàn)方法

2019-09-17 13:32asp.net空間網(wǎng) ASP.NET教程

延遲加載,亦稱延遲實例化,延遲初始化等,主要表達的思想是,把對象的創(chuàng)建將會延遲到使用時創(chuàng)建,而不是在對象實例化時創(chuàng)建對象,即用時才加載。

這種方式有助于提高于應用程序的性能,避免浪費計算,節(jié)省內(nèi)存的使用等。針對于這種做法,似乎稱之為即用即創(chuàng)建更為合適些。
先來看一下在Framework4.0中如何實現(xiàn)延遲加載。 
Framework4.0提供了一個包裝類 Lazy,可以輕松的實現(xiàn)延遲加載。 

復制代碼代碼如下:


///這行代碼表明:要創(chuàng)建一個延遲加載的字符串對象s 
///原型為LazyT> 對象名=new LazyT>(FunT>) 
///采用泛型委托進行構造,實例化此委托時要求必須是返回值T類型的方法 
///如在本例中,T為string,則TestLazy.GetString方法的返回值必須也是string類型 
Lazystring> s = new Lazystring>(TestLazy.GetString); 
本例中TestLazy.GetString()方法如下示: 
public class TestLazy 

public static string GetString() 

return DateTime.Now.ToLongTimeString(); 


可以通過IsValueCreated屬性來確定對象是否已創(chuàng)建,通過Value屬性來獲取當前對象的值。 
Console.WriteLine(s.IsValueCreated);//返回False 
Console.WriteLine(s.IsValueCreated);//返回True 
下面經(jīng)出完整代碼,以供測試: 

復制代碼代碼如下:


class Program 

static void Main(string[] args) 

///這行代碼表明:要創(chuàng)建一個延遲加載的字符串對象s 
///原型為Lazy 對象名=new Lazy(Fun) 
///采用泛型委托進行構造,實例化此委托時要求必須是返回值T類型的方法 
///如在本例中,T為string,則TestLazy.GetString方法的返回值必須也是string類型 
Lazy s = new Lazy(TestLazy.GetString); 
Console.WriteLine(s.IsValueCreated);//返回False 
Console.WriteLine(s.IsValueCreated);//返回True 


public class TestLazy 

public static string GetString() 

return DateTime.Now.ToLongTimeString(); 


下面再用一個例子,演示延遲加載: 
在這個例子中,使用了BlogUser對象,該對象包含多個Article對象,當加載BlogUser對象時,Article對象并不加載,當需要使用Article對象時,才加載。 

復制代碼代碼如下:


class Program 

static void Main(string[] args) 

BlogUser blogUser = new BlogUser(1); 
Console.WriteLine("blogUser has been initialized"); 

Console.WriteLine(article.Title);} 


public class BlogUser 

public int Id { get; private set; } 
public Lazy> Articles { get; private set; } 
public BlogUser(int id) 

this.Id = id; 
Articles =new Lazy>(()=>ArticleServices.GetArticesByID(id)); 
Console.WriteLine("BlogUser Initializer"); 


public class Article 

public int Id { get; set; } 
public string Title{get;set;} 
public DateTime PublishDate { get; set;} 
public class ArticleServices 

public static List GetArticesByID(int blogUserID) 

List articles = new List { 
new Article{Id=1,Title="Lazy Load",PublishDate=DateTime.Parse("2011-4-20")}, 
new Article{Id=2,Title="Delegate",PublishDate=DateTime.Parse("2011-4-21")}, 
new Article{Id=3,Title="Event",PublishDate=DateTime.Parse("2011-4-22")}, 
new Article{Id=4,Title="Thread",PublishDate=DateTime.Parse("2011-4-23} 
}; 
Console.WriteLine("Article Initalizer"); 
return articles; 


運行結果如圖示: 
在Framework4.0中實現(xiàn)延遲加載的實現(xiàn)方法 
最后說一下,延遲加載主要應用場景: 

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产美女www爽爽爽免费视频 | 99热69 | 国产99精品 | 国产一区二区三区在线免费观看 | 免费观看黄色大片 | 亚洲成人av | 久久精品亚洲 | 日韩精品视频免费在线观看 | 91视频网页版 | 久久综合久久综合久久 | 日韩一区二区电影 | 日韩欧美在线观看视频 | 日日操夜夜操免费视频 | 欧美色阁 | 91在线高清 | 午夜国产视频 | 99最新在线视频 | 黄色在线 | 视频精品一区二区 | 视频一区二区三区在线观看 | 九色av| 日韩成人精品在线 | 亚洲欧美日韩在线 | 99中文字幕 | 涩涩久久 | 欧美精品在线视频 | 日韩av在线电影 | 日本免费一区二区三区四区 | 91在线免费观看 | 久久久久久久久久久久久大色天下 | av色伊人久久综合一区二区 | 精品视频久久久 | 久久一二 | 国产精品一区二区视频 | 日韩欧美中文字幕一区二区三区 | 免费看a| 91av导航| 91精品国产综合久久久久久漫画 | 五月激情综合网 | 骚片网站| 国产中文字幕在线 |