将函数作为形参

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

Predicate 泛型委托。

Predicate\func\action 的输入参数都标记为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; } }         }

转载于:https://www.cnblogs.com/gaoxianzhi/p/3816121.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值