在 C# 中,委托是对方法的引用。它的工作方式类似于C 和 C++ 中的函数指针。但它比函数指针是面向对象的、安全的和类型安全的。
对于静态方法,委托只封装方法。但是对于实例方法,它同时封装了方法和实例。
委托的最佳用途是用作事件。
在内部,委托声明定义了一个类,它是System.Delegate的派生类。
让我们看一个调用 add() 和 mul() 方法的 C# 中委托的简单示例。
using System;
delegate int Calculator(int n);//declaring delegate
public class DelegateExample
{
static int number = 100;
public static int add(int n)
{
number = number + n;
return number;
}
public static int mul(int n)
{
number = number * n;
return number;
}
public static int getNumber()
{
return number;
}
public static void Main(string[] args)
{
Calculator c1 = new Calculator(add);//instantiating delegate
Calculator c2 = new Calculator(mul);
c1(20);//calling method using delegate
Console.WriteLine("After c1 delegate, Number is: " + getNumber());
c2(3);
Console.WriteLine("After c2 delegate, Number is: " + getNumber());
}
}
输出:
fter c1 delegate, Number is: 120 After c2 delegate, Number is: 360