C#中的委托

简单来说,一个委托就是一个对象,这个对象知道如何去调用方法。

一个委托类型定义了该委托类型的实例所能调用的一类方法。具体来说,它规定了方法的返回值和参数类型。下面的代码定义了一个名称为Transformer的委托类型:

1 delegate int Transformer( int x );

Transformer与所有返回值为 int 类型,并且只有一个 int 类型参数的方法相匹配。例如下面的方法:

1 static int Square( int x ) 
2 { 
3    return x * x;     
4  }

在使用委托时,将一个方法赋给委托对象,例如:

1 Transformer t = Square;

这样,我们就可以像调用一个方法一样调用委托:

1 int answer = t(3); // 9

以下代码是一个完整的示例:

 1 delegate int Transformer( int x );
 2 
 3 class Test
 4 {
 5      static void main()
 6      {
 7          Transformer t = new Transformer( Square );      // 将方法"委托"给委托实例,也可以简写为 Transformer t = Square;
 8          int result = t(3);           // 委托该实例执行Square方法
 9          Console.WriteLine(result);   // 9
10      }
11 
12      static int Square ( int x )
13      {
14          return x * x;
15      }      
16  }

通过上述例子可以看出,当调用委托时,会将传入的参数传递给委托中的方法,而该方法的返回值再通过委托的返回值传递出来。

 

posted @ 2017-02-15 16:46  Hulkee  阅读(138)  评论(0编辑  收藏  举报