zoukankan      html  css  js  c++  java
  • .net 4.0的Lazy<T>方法,反射实现延迟加载。

    //自己山寨。
    public
    class YaLazy<T> { private bool _isValueCreated = false; public bool IsValueCreated { get { return _isValueCreated; } } private T _value; public T Value { get { if (this._value != null) { return (T)_value; } return CreateValue(); } } private T CreateValue() { _isValueCreated = true; _value = (T)Activator.CreateInstance(typeof(T)); return _value; } }

    使用方法和Lazy<T>类似:

    YaLazy<Student> student2 = new YaLazy<Student>();
                 Console.WriteLine(student2);
                 student2.Value.ID = 23;
                 student2.Value.Name = "New";
                 Console.WriteLine(student2);

    ----------------------

    或者使用官方用法:

    Lazy<Student> student = newLazy<Student>();
      Console.WriteLine(student);
      student.Value.ID = 23;
      student.Value.Name = "New";
      Console.WriteLine(student);

    延迟初始化Student:我们在Console.WriteLine(student);  一行设置断点查看,发现IsValueCreated是false ,Value值是null。

  • 相关阅读:
    java
    java
    java
    js
    java
    异常之异常处理
    面向对象之元类
    面向对象之内置方法
    面向对象之反射
    面向对象之类方法与静态方法
  • 原文地址:https://www.cnblogs.com/x-poior/p/6872584.html
Copyright © 2011-2022 走看看