延迟加载

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

例如:一个文章实体类Article,一个文章分类实体类Category,通过Article获取相对应的Category

方法1:在获取Article实体类时,将相对应的Category实体类塞给Article

方法2:要调用Category时,通过Article从数据库中获取

方法3:在Category属性的get访问器中实现读取数据库获取文章分类的代码,这样如果没有使用到Category属性的 时候是不会调用到这些代码的,也就不会去访问数据库拿东西了

 

复制代码
 class Program
    {
        static void Main(string[] args)
        {
            ///这行代码表明:要创建一个延迟加载的字符串对象s      
            //////原型为Lazy<T> 对象名=new Lazy<T>(Fun<T>)      
            ///采用泛型委托进行构造,实例化此委托时要求必须是返回值T类型的方法    
            //////如在本例中,T为string,则TestLazy.GetString方法的返回值必须也是string类型   
            Lazy<string> s = new Lazy<string>(TestLazy.GetString);
            Console.WriteLine(s.IsValueCreated);//返回False        
            Console.WriteLine(s.Value); //返回S的当前值       
            Console.WriteLine(s.IsValueCreated);//返回True     
        }
    }
   public class TestLazy
   {
       public static string GetString()
       {
           return DateTime.Now.ToLongTimeString();
       }
   }
复制代码

http://kb.cnblogs.com/page/90674/

http://kb.cnblogs.com/page/90677/

http://kb.cnblogs.com/page/99182/

http://blog.zhaojie.me/2009/09/standard-lazy-proxy.html

posted @   hongdada  阅读(253)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示