委托
委托(delegate): 类似于C语言的指针,委托是存有对某个方法的引用的一种引用类型变量,其实委托及时一种数据类型,用来存储一个方法。
delegate是C#中的引用类型
委托的使用场景:
委托一般用于时间或回调函数(方法的参数),未做继承于System.delegate这个类
委托方法: invoke
Invoke 是委托类型的一个成员方法,它用来调用委托所指向的方法。
委托定义语法
// 使用delegate关键字声明委托MyDelegate
public delegate void MyDelegate(int n);
实例化委托的两种方法
方法1
public delegate void NumChange(int n); // 定义委托类型
NumChange n = new NumChange(AddNum); // AddNum是于委托相对应的方法
方法2
public delegate void NumChange(int n); // 定义委托类型
NumChange n = AddNum; // 不使用new 直接等于方法
委托的使用 :
提示: 定义委托时返回值和实参一定要和与委托对应的方法相对应
执行结果:
21
委托多播
委托多播就是一次执行多个方法
在给委托赋值之后使用 += 给委托添加别的方法,以此来完成委托多播。
委托多播也可以使用减号减去方法
执行结果:
内置委托
三种内置委托:
Action:无返回值.
Func:尖括号最后一个类型为返回值类型.必须要有返回值.
Predicate: 返回类型为bool,必须有一个参数,等价于Func<T, bool>;
Action无返回值
Func有返回值
尖括号最后一个类型为返回值类型.必须要有返回值.
委托作为函数的参数使用
执行结果:
本篇文章到此结束,如有不足还请指点!!!