下面的例子是自己打的,挫点是正常的。 资料是网上的。整理了一下,可能还有遗漏
委托是一种基本的引用类型。
调用委托的时候,委托包含的所有方法将被执行。
定义委托关键字 delegate
委托的前提是要有那么一个方法
通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。(来自c#中文手册)
委托不知道也不关心所引用的方法的类;只关心引用的方法是否具有与委托相同的参数和返回类型。
(来自c#中文手册)
定义语法如下:
修饰符 delegate 返回值类型 委托名 ( 参数列表 );
//同下
public delegate void weituo();
static void Main(string[] args)
{
weituo a = new weituo(say);//委托实例化(ps:跟new一个对象差不多)
a();
Console.ReadKey();
}
static void say()
{
Console.WriteLine("MVP_JiangJiang");
}
//无参无返回值
//打印MVP_JiangJiang
public delegate void weituo();
static void Main(string[] args)
{
weituo a = say;//注意这里是方法名,并不用接上后面的()
a();
Console.ReadKey();
}
static void say()
{
Console.WriteLine("MVP_JiangJiang");
}
//有参无返回值
//打印MVP_JiangJiang
public delegate void weituo(string s);
static void Main(string[] args)
{
weituo a = say;
string s = "MVP_JiangJiang";
a(s);
Console.ReadKey();
}
static void say(string s)
{
Console.WriteLine(s);
}
//有参有返回值
//打印1.3+1.5的结果
public delegate double weituo(double n1,double n2);
static void Main(string[] args)
{
weituo a = say;
double n1 = 1.3, n2 = 1.5;
double c = a.Invoke(n1, n2);
Console.WriteLine(c);
Console.ReadKey();
}
static double say(double n1,double n2)
{
return n1 + n2;
}
当然了,上面的那些例子其实也没有必要用委托,直接用方法或者直接写下去也行。