委托是一种引用类型,它可以用来封装方法,并且可以是方法在形式上以参数进行传递。总之功能上给人很强大的感觉。
委托的签名与方法的签名需要匹配,但是不是必须,因为参数如果是需要匹配的类型的子类,这种声明的委托也是可行的。
委托的实质:委托就是用来封装方法的,可以把方法当做参数进行传递,在新声明的方法中调用该委托,以此来实现某一方法的内容。
委托可以声明在类内,也可以声明到类外,声明在类内时,如果需要在外面访问,需要对委托加上Public的访问修饰符。
声明方法:delegate void Dl(int i);  这样就可以声明一个委托。
接着:定义一个如委托签名相匹配的方法(为了演示委托的用法)。
 static void Fuc(int i)//定义成非静态的也行
 {
   Console.WriteLine(i);
 }
接着就可以使用了
Dl dl = new Dl(Fuc); 
或者 Dl dl = Fuc;//这种声明更加简便,因为编译器具有推断功能,将new的实现隐藏起来了。
委托的用法不止这么简单,委托和委托之间还可以相加。
先在内外定义几个方法
void FFF(int i)
       {
          Console.WriteLine("FFF");
           Console.WriteLine(i);
       }  
void FF(int i)
       {
          Console.WriteLine("FF");
           Console.WriteLine(i);
       }   
void F(int i)
       {
          Console.WriteLine("F");
           Console.WriteLine(i);
       }
这样在Main方法中:
Program p = new Program();
Dl dl1 = p.F;  
//Dl dl = new Dl(p.F);
Dl dl2 = p.FF; 
Dl dl3 = p.FFF;
Dl dl4 = dl1 + dl2 + dl3;
Dl4( 2 );
执行的结果是dl1dl2dl3分别被传入2数值,然后分别对其进行运算。
不仅如此,委托还可以用+=运算符,Dl4 += Fuc;运算方式与上面的运算方法相似。
运用委托可以让方式当做参数进行传递。
在声明方法时
static void Da(Dl dl1)
    {
        dl(100);
    }
Dl dl5=Da;
dl5(dl1);
这样方法就被当做参数进行传递。