委托
相当于对一组方法的列表的引用。用处:使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码 ,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
委托属于一个定义,是和类、接口类似的,通常放在类的外部,使用它时是当做类来看待而不是一个方法。相当于对一组方法的列表的引用
用处:**委托可以将一组(方法的引用)封装在(委托对象)内。然后将该(委托对象)传递给 可调用 所引用方法的代码**,
而 不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,
与c++不同 ~~委托是面向对象,而且是类型安全的。~~
委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分,
且用public修饰,便于外部调用。
若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用,
using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//GreetingDelegate(string name)相当于对一组方法的列表( //EnglishGreeting(string name)和ChineseGreeting(string name))的引用
class Program {
private static void EnglishGreeting(string name) {
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name) {
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的方法作为参数
private static void GreetPeople(string name, GreetingDelegate MakeGreeting) { //GreetingDelegate MakeGr