using System.Collections.Generic;
using System.Linq;
using System.Text;
{
//像方法一样定义委托
delegate void DL(int i);
class Program
{
static void Main(string[] args)
{
Program pro = new Program();
DL dl1 = new DL(pro.FF);//将方法分配给委托 委托将与方法有相同的作用
DL dl2 = pro.FF1;//与 DL dl1=new DL(pro.FF1)相同;
DL dl3 = delegate(int i) { Console.WriteLine("匿名"); Console.WriteLine(i); };//匿名方法
//委托方法的调用可以像其他任何方法一样,具有参数和返回值。
//与委托的签名(由返回类型和参数组成)匹配的任何可访问类或结构中的任何方法都可以分配给该委托
dl1(100);
DY(dl1);
MYclass mc = new MYclass();
mc.Method(dl1);
Console.WriteLine("--------------------------");
DL dl4 = dl1 + dl2+dl3 ;
dl4 += DD ;
dl4 += pro.DD1;
dl4(13);//dl1(13)+dl2(13)+dl3(13)+DD(13)+DD1(13)
static void DD(int k)//方法可以是静态方法
{
Console.WriteLine("DD 静态");
Console.WriteLine(k);
}
void DD1(int j)//也可以是实例方法
{
Console.WriteLine("DD1 ");
Console.WriteLine(j);
}
static void DY(DL dl)//将方法作为参数进行传递
{
dl(200);
}
{
Console.WriteLine("FF");
Console.WriteLine(i);
}
public void FF1(int i)
{
Console.WriteLine("FF1");
Console.WriteLine(i);
}
}
class MYclass
{
public void Method(DL dl)
{
dl(300);
}
}
}