可以认为委托是持有一个或多个方法的对象。
当然,一般情况下你不会想要“执行”一个对象,但委托与典型的对象不同。可以执行委托,这时委托会执行它所“持有”的方法。
// 1、声明委托
delegate void MyDel(int val);
void fun1(int v1)
{
Console.WriteLine("fun1 " + v1);
}
void fun2(int v2)
{
Console.WriteLine("fun2 " + v2);
}
void Main()
{
MyDel del; // 2、声明委托变量
del = new MyDel(fun1);
del += fun2; // 简写
del(55); // 3、调用委托
}
委托和类一样,是一种用户定义类型。但类表示的是数据和方法的集合,而委托则持有一个或多个方法,以及一系列预定义操作。
你可以把delegate看作一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型
调用委托有两种方法,上面代码的第3步是以方法的形式调用,还有通过invoke方法调用委托;
dev?.Invoke(55);
匿名方法
delegate int MyDel(int v);
MyDel del = delegate(int x){ return x + 20; };
del(66);
|