在 C#
语言中命名方法委托是最常用的一种委托。
定义委托
定义的语法形式如下:
修饰符 delegate 返回值类型 委托名(参数列表);
从上面的定义可以看出,委托的定义与方法的定义是相似的。例如定义一个不带参数的委托,代码如下:
public delegate void MyDelegate();
实例化委托
命名方法委托在实例化委托时必须带入方法的具体名称。实例化委托的语法形式如下:
委托名 委托对象名 = new 委托名(方法名);
委托中传递的方法名既可以是静态方法的名称,也可以是实例方法的名称。
注意
在委托中所写的方法名必须与委托定义时的返回值类型和参数列表相同。
调用委托
调用委托的语法形式如下:
委托对象名(参数列表);
在这里,参数列表中传递的参数与委托定义的参数列表相同即可。
示例
静态方法
若使用静态方法,在向委托中传递方法名时只需要 用类名.方法名
的形式。如下所示:
class Program { public delegate void MyDelegate(); static void Main(string[] args) { MyDelegate myDelegate = new MyDelegate(Test.SayHello); myDelegate(); } } class Test { public static void SayHello() { Console.WriteLine("Hello Delegate!"); } }
输出
Hello Delegate!
实例方法
由于在委托中使用的是实例方法,则需要通过类的实例来调用方法,即使用 new 类名(). 方法名
的形式。如下所示:
class Program { public delegate void MyDelegate(); static void Main(string[] args) { MyDelegate myDelegate = new MyDelegate(new Test().SayHello); myDelegate(); } } class Test { public void SayHello() { Console.WriteLine("Hello Delegate!"); } }
除了使用匿名对象的方式调用方法以外,也可以先创建类的实例,再通过类的实例调用方法。
输出
Hello Delegate!