宝哥软件园

Framework4.0中延迟加载的实现方法

编辑:宝哥软件园 来源:互联网 时间:2021-10-18

这种方法有助于提高应用程序的性能,避免浪费计算,节省内存的使用。鉴于这种做法,称之为即用型创作似乎更为合适。让我们来看看如何在Framework4.0中实现延迟加载,Framework4.0提供了一个包装类Lazy,可以轻松实现延迟加载。复制的代码如下:////这一行代码表示:要创建一个延迟加载的字符串对象,原型是LazyT对象名=new LazyT(FunT) ///它是由一个泛型委托构造的。当实例化这个委托时,它必须是一个返回值为T类型的方法。///例如,t是一个字符串。然后是TestLazy的返回值。GetString方法还必须是字符串类型lazy string s=new lazy string(test lazy。getstring);在这个例子中,TestLazy。GetString()方法如下:public class test lazy { public static string GetString(){ return datetime . now . tolongtimestring();}}您可以使用IsValueCreated属性来确定是否已经创建了对象,并使用Value属性来获取当前对象的值。控制台。WriteLine(s . isvaluerecreated);//返回false console . write line(s . isvaluerecreated);//返回True下面的完整代码,用于测试:复制的代码如下:类程序{ static void main(string[]args){///这一行代码表示要创建一个延迟加载的string对象,原型是Lazy对象名称=new Lazy(Fun) ///由泛型委托构造。当实例化这个委托时,它需要是一个返回值为t类型的方法。///如果在这个例子中t是字符串,TestLazy的返回值。GetString方法也必须是String类型lazy s=newlazy (testlazy。getstring);控制台。WriteLine(s . isvaluerecreated);//返回false console . write line(s . isvaluerecreated);//返回true } } public class test lazy { public static string getstring(){ return datetime . now . tolongtimestring();}}下面是另一个演示延迟加载的例子:在这个例子中,使用了blogger对象,它包含多个Article对象。加载blogger对象时,不会加载Article对象,而只会在需要使用Article对象时加载。复制代码如下: class program { static void main(string[]args){ blog user blog user=new blog user(1);控制台。WriteLine('blogUser已初始化');{控制台。WriteLine(文章。标题);} } }公共类BlogUser { public int Id { get私有集;}公共懒人文章{ get私有集;} public BlogUser(int id) { this。Id=idarticles=new Lazy(()=article SerVices。GetArticesByID(id));控制台。WriteLine(' BlogUser Initializer ');} }公共类Article { public int Id { get设置;}公共字符串Title { get设置;} public DateTime publish date { get;设置;} public class Article services { public static List getarticles byid(int blogUserID){ List articles=new List { new Article { Id=1,Title='Lazy Load ',PublishDate=DateTime。解析(' 2011-4-20')},新文章{Id=2,标题='委托',发布日期=日期时间。解析(' 2011-4-21')},新文章{Id=3,Title='Event ',PublishDate=DateTime。解析(' 2011-4-22')},新文章{Id=4,Title='Thread ',PublishDate=DateTime。解析(' 2011-4-23 } };控制台。WriteLine(' Article initializer ');归还物品;}}运行结果如图所示:

最后,延迟加载的主要应用场景是:当创建一个对象的子对象的成本比较高,并且有可能子对象不会在程序中使用时,我们可以考虑使用延迟加载来创建子对象。另一种情况是程序启动时需要创建多个对象,但只需要立即使用几个对象,这样就可以将一些不必要的初始化工作延迟到使用后,可以有效提高程序的启动速度。该技术在ORM框架中应用广泛,并非C#独有。比如Java中的Hibernate框架也使用了这种技术。

更多资讯
游戏推荐
更多+