委托 Action系统无返回值委托 Func有返回委托

    delegate 委托关键字 如果我们要把方法当参数来传递的话,就要用到委托。简单来说委托是一个类型,这个类型可以赋值一个方法的引用。

委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。

    在我们使用委托的时候,也需要两个阶段 ,和定义类差不多。

                  1  首先定义委托,告诉编译器这个委托可以指向那些类型和方法

                  2然后创建该委托的实例。

    delegate void intMethodinvoker(int x);

    定义了一个叫做 intMethodinvoker的委托, 指定了返回类型void和可以指向什么类型的方法 int x。

   定义一个委托要定义  方法的参数 和返回类型   ,使用delegate

    delegate double TwoLongOp(long first, long second);

    delegate string GetASting();

   例子

      private delegate sting GetAString();  定义了一个委托 

      int x=40;

      GetAString a =new GetAString (x.ToString);  ToString后面没给括号(),

    x.ToString()正常使用时必须有()的,   ToString 方法可以吧所有的类型转化成字符串类型。

        a指向了x中的tosting方法   

       string s=a();  通过委托实例化去调用x中的tostring()

————————————————————

   第二种初始化简写   GetAString a =x.ToString;

         调用第二种方法用           string s =a.Invoke();    通过Invoke方法调用a所用引用的方法

      private delegate void PrintString();

     

      stayoc void PrintStr(PrintString print) print  就是一个方法,当作一个变量传递

   {

         print();

    }

   PrintString method =Method1;

    PrintStr(method);

      static void Method1(){

                 Console.WriteLine("method1");

                 }

————————————————————

Action系统无返回值委托  ,要求委托的方法必须是无返回值void

Action <int> a;    方法必须是无返回值,参数类型必须是int

Action <int,int> a=PrintDoubleInt;

staic void PrintDouble(int i1, int i2){}

___________________________________

       static int Text2(string str)

{

     return 100;

}

     Func<string,int>a= Text2;   Func 必须有返回类型,最后一个int为返回类型,前面的为参数。如果只有一个就是为返回类型 最多带16个返回参数

   

    delegate double DoubleOp(double x);

   如何用Func 来表示

   Func<double,double>                   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值