zoukankan      html  css  js  c++  java
  • 将函数作为形参

    使用了泛型委托这个东西。

    Predicate 泛型委托。

    Predicatefuncaction 的输入参数都标记为IN,这就意味着参数是支持逆变的。

    逆变意味着可以从较大的类型转换为较小的类型。<object> 可以转换为<string> .逆变实际上也是一种泛型!!!

     public class DoTest     {

            public void doTest()         {

                TestInfo ti=new TestInfo();                        

                ti.Good = 6;                        

                TestDele<TestInfo> td = new TestDele<TestInfo>();

                td.DoWork(5, env =>{env.Good = env.Good + 1;}, ti);

                TestDele2 td2 = new TestDele2();                 

               td2.DoWork(5, env => { env.Good = env.Good + 1; }, ti);// 编译器可以从ti 判定 env的类型,而不用在<>中指明。

                td2.DoWork<TestInfo>(5, env => { env.Good = env.Good + 1; }, ti);

            }         }

        public class TestDele<T>     {

            public delegate void func2(T t);

            public void DoWork(int id,func2 f2,T p2)         {             f2(p2);              }    

        }

        public class TestDele2     {

            public delegate void func2<T>(T t);

            public void DoWork<T>(int id, func2<T> f2, T p2)         {             f2(p2);         }

          

        }

        public class TestInfo     {

            private int good;         public int Good { get { return good; } set { good = value; } }         }

  • 相关阅读:
    How to run Java main class and pass application arguments in Maven?
    【转】三年后再反思我的" Java Web项目管理得失谈"
    Object.keys()
    angular $resource 的 get请求 和 post请求
    vue 自定义 移动端筛选条件
    获取当前时间 YYYY-MM-DD
    vue-router 二级路由
    blob 对象 实现分片上传 及 显示进度条
    js性能优化之函数节流(分流函数)
    vue + vue-lazyload 实现图片懒加载
  • 原文地址:https://www.cnblogs.com/gaoxianzhi/p/3816121.html
Copyright © 2011-2022 走看看