C#语言中的委托是函数指针的升级版。
首先,C#中事件:事件时属于类的成员,所以要放在类的内部。
其次,委托属于一个定义,是和类、接口类似的,通常放在外部。
(因为大多数委托都要被调用)
委托定义在类里面还是类外面视情况而定,一般定义在与类定义平级部分,
且用public修饰,便于外部调用。
若定义在类的内部,则必须通过调用该类的成员才能取得其委托的引用,
频繁调用的情况下不合适。
委托是一种特殊的类,和普通类不同的是委托是对一类方法的抽象。
因此只能在类内部定义内部类(包括委托、结构和枚举)而不能在方法中定义
委托定义在类内部,举例说明如下:
Class A {
//声明~
private delegate void type();
private void test(){…}
public void start(){
private delegate void type();
}
}
Action 和 Func 是 C# 内置的委托实例
using System;
namespace DelegateExample
{
class Program
{
static void Main(string[] args)
{
Calculator calculator = new Calculator();
Action action = new Action(calculator.Report); // 委托
calculator.Report();
action.Invoke();
action();
Func<int, int, int> func1 = new Func<int, int, int>(calculator.Add); // 泛型委托
Func<int, int, int> func2 = new Func<int</