当前位置: 首页 > news >正文

潍坊网站公司四川省建设勘察设计网站

潍坊网站公司,四川省建设勘察设计网站,专业做标书,利尔化学股票最新消息延迟初始化 是一种将对象的创建延迟到第一次需要用时的技术#xff0c;换句话说#xff0c;对象的初始化是发生在真正需要的时候才执行#xff0c;值得注意的是#xff0c;术语 延迟初始化 和 延迟实例化 的意思是相同的——可以互换使用#xff0c;通过使用 延迟初始化 技… 延迟初始化 是一种将对象的创建延迟到第一次需要用时的技术换句话说对象的初始化是发生在真正需要的时候才执行值得注意的是术语 延迟初始化 和 延迟实例化 的意思是相同的——可以互换使用通过使用 延迟初始化 技术可以避免应用程序不必要的计算和内存消耗这篇文章我们将会讨论如何在 C# 中使用 延迟初始化。有些朋友听完这些可能会懵逼接下来用一个简单的例子来了解下 延迟加载 的场景考虑下面两个类 Customer 和 Order Customer 类包含了一个 Orders 属性一个人肯定会有很多的订单也就意味着它可能包含了很多的数据甚至还需要连接数据库去获取 Orders 记录在这种场景下没必要给 customer 集合中的所有人都带上完整的 orders这个初始化开销是巨大的优化点就是不加载 Orders直到某些 customer 真的需要 Orders 时才按需灌入。使用 LazyT 你可以自己写一段逻辑来实现 延迟初始化在 .Net Framework 4.0 之后就没必要了 因为在 System 命名空间下已经提供了 LazyT而且还是 线程安全 的可以使用这个类来延迟 资源密集型 的对象按需创建。当使用 LazyT 的时候这里的 T 就是你要延迟的集合那如何做到按需加载呢调用 LazyT.Value 即可下面的代码片段展示了如何使用 LazyT。 LazyIEnumerableOrder orders  new LazyIEnumerableOrder(); IEnumerableOrder result  lazyOrders.Value;现在考虑下面的两个类: Author 和 Blog一个作者可以写很多文章所以这两个类之间是 一对多 的关系下面的代码片段展示了这种关系。public class Author{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public string Address { get; set; }public ListBlog Blogs { get; set; }}public class Blog{public int Id { get; set; }public string Title { get; set; }public DateTime PublicationDate { get; set; }}值得注意的是关系型数据库中的 一对多 关系映射到对象模型就是 Author 类中增加一个 List Blogs 属性使用这个属性Author 就可以维持一个或者多个 Blog 实例对象对吧。现在假定在 用户界面 上仅需展示 Author 的基础信息比如说(firstnamelastnameaddress在这种场景下给 Author 对象加载 Blogs 集合是毫无意义的当真的需要加载 Blogs 时执行 Blogs.Value 即可立即执行下面展示了 LazyBlog Blogs 的用法。public class Author{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public string Address { get; set; }public LazyIListBlog Blogs  new LazyIListBlog(()  GetBlogDetailsForAuthor(this.Id));private IListBlog GetBlogDetailsForAuthor(int Id){//Write code here to retrieve all blog details for an author.}}使用通用的 Lazy 接下来让我们看看如何使用泛型的 Lazy 实现单例模式下面的 StateManager 是线程安全的同时为了演示 延迟初始化我使用了 静态构造函数 来确保 C# 编译器不会将它标记为 beforefieldinit。public sealed class StateManager{private StateManager(){}public static StateManager Instance{get{return Nested.obj;}}private class Nested{static Nested(){}internal static readonly StateManager obj  new StateManager();}}下面我用 LazyT 来包装 StateManager你会发现使用 LazyT 来做延迟初始化真的是太简单了。。。public class StateManager{private static readonly LazyStateManager obj  new LazyStateManager(()  new StateManager());private StateManager() { }public static StateManager Instance{get{return obj.Value;}}}可以瞄一下上面代码的 Instance 属性它被做成只读属性了同时也要注意 obj.Value 也是一个只读属性。public class LazyT{public T Value{get{if (_state ! null){return CreateValue();}return _value;}}}延迟初始化 是一个很不错的性能优化技术它允许你将那些 资源密集型 的对象延迟到你真正需要加载的时候再加载大家结合自己的场景尽情的使用吧译文链接https://www.infoworld.com/article/3227207/how-to-perform-lazy-initialization-in-c.html
http://www.pierceye.com/news/983148/

相关文章:

  • 网站设计制作音乐排行榜44555pd永久四色端口
  • 网站优化方案教程如何注册chn域名网站
  • 怎样建设免费网站个别网站网速慢怎么做
  • 网页设计制作音乐排行榜一键seo提交收录
  • 网站推广要我营业执照复印件conoha wordpress
  • 免费行情软件app网站排行高质量外链网站
  • 免费解析网站制作网站开发项目实战视频
  • 柳州网站建设工作室基金会网站开发方案
  • 龙海网站建设微网站如何建设
  • 手机视频网站怎么做贵阳专业做网站
  • 网站建设题库vps上的网站运行太慢
  • 化妆品网站优化沧州网站制作公司
  • 专业优定软件网站建设上海seo服务
  • 网站充值怎么做的c2c平台的产品类型
  • 阿里去要企业网站建设方案书手机设计房子的软件3d下载
  • 凡科网站登录入轻博客网站开发
  • wordpress微信机器人订阅号性价比高seo网站优化
  • 网站建设全网推广亚马逊seo搜索什么意思
  • 做网站_你的出路在哪里android app for wordpress
  • 代刷网网站建设成都建立网站
  • 建设网站的费用预算商城网站制作
  • 北京网络法庭2018年企业网站优化如何做
  • asp.net做网站的步骤网站维护的作用
  • 网站制作前期所需要准备wordpress邮箱配置文件
  • 网站建设网站排名怎么做赣州专业做网站
  • 吉林电商网站建设价格做网站需要每年都缴费吗
  • 怎样用dede搭建网站域名网址
  • 做网站编辑有前途怎么样才算是一个网站页面
  • 建设鲜花网站前的市场分析网店设计理念
  • 网站建设优化服务公司wordpress非代码方式添加备案号