• LazyValue<T>


    public void ExtendFuncT()
            {
                //():匿名无参方法。() =>方法名,指派匿名无参方法去执行另外一个方法。
                LazyValue<int> lazyOne = new LazyValue<int>(() => ExpensiveOne());//匿名无参方法被指派去执行ExpensiveOne
                LazyValue<long> lazyTwo = new LazyValue<long>(() => ExpensiveTwo("apple"));//匿名无参方法被指派去执行ExpensiveTwo
    
                Console.WriteLine("LazyValue objects have been created.");
    
                //泛型类别根据 关联的委托与方法 取值。
                Console.WriteLine(lazyOne.Value);//跳转到() => ExpensiveOne(),执行LazyValue<T>.Value的取值,然后显示结果。
                Console.WriteLine(lazyTwo.Value);//跳转到() => ExpensiveTwo("apple"),执行LazyValue<T>.Value的取值,然后显示结果。
            }
            //无参测试方法
            static int ExpensiveOne()
            {
                Console.WriteLine("
    ExpensiveOne() is executing.");
                return 1;
            }
            //计算字串长度
            static long ExpensiveTwo(string input)
            {
                Console.WriteLine("
    ExpensiveTwo() is executing.");
                return (long)input.Length;
            }
        }
        //扩展:自定义泛型类别LazyValue T,以Funct<T>为参数类型传递。
        class LazyValue<T> where T : struct
        {
            private T? val;//或 Nullable<T> val; //标记返回类型T,同时用于保存Func<T>委托的方法的返回值
            private Func<T> getValue;           //返回类型为T的委托
    
            // 构造。参数Funct<T>类型:传入的参数为返回类型为TResult(任何类型)的无参方法。
            public LazyValue(Func<T> func)
            {
                val = null;
                getValue = func;
            }
    
            public T Value
            {
                get
                {
                    if (val == null)
                        val = getValue();//取得委托方法的返回值。
                    return (T)val;      //强制抓换委托方法返回值类型。
                }
            }
        }
    

      

  • 相关阅读:
    机器学习
    机器学习
    JavaWeb之tomcat安装、配置与使用(一)
    Tomcat安装、配置和部署笔记
    Java配置----JDK开发环境搭建及环境变量配置
    安装SQL2012
    SQLServer 数据库变成单个用户后无法访问问题的解决方法
    临时记录
    SQL Server 动态生成数据库所有表Insert语句
    SQL2000查看表的大小
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/9477491.html
Copyright © 2020-2023  润新知