更新:2007 年 11 月
委托类型的声明与方法签名相似,有一个返回值和任意数目任意类型的参数:
复制代码 | |
---|---|
public delegate void TestDelegate(string message); public delegate int TestDelegate(MyType m, long num); |
delegate 是一种可用于封装命名或匿名方法的引用类型。委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。有关委托的应用,请参见
备注
委托是
通过将委托与命名方法或匿名方法关联,可以实例化委托。有关更多信息,请参见
必须使用具有兼容返回类型和输入参数的方法或 lambda 表达式实例化委托。有关方法签名中允许的方差度的更多信息,请参见
示例
C# | 复制代码 |
---|---|
// Declare delegate -- defines required signature: delegate double MathAction(double num); class DelegateTest { // Regular method that matches signature: static double Double(double input) { return input * 2; } static void Main() { // Instantiate delegate with named method: MathAction ma = Double; // Invoke delegate ma: double multByTwo = ma(4.5); Console.WriteLine(multByTwo); // Instantiate delegate with anonymous method: MathAction ma2 = delegate(double input) { return input * input; }; double square = ma2(5); Console.WriteLine(square); // Instantiate delegate with lambda expression MathAction ma3 = s => s * s * s; double cube = ma3(4.375); Console.WriteLine(cube); } } |
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
1.11 委托
15 委托