您的位置:首页 > 其它

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

2016-06-26 19:01 851 查看
    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>                   




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: