委托
委托是一种特殊类型的对象,包含的是一个或多个方法的地址(方法的引用)。
提供一种方法的原型,实现方法的回调。
委托是类型安全的类,它定义了返回类型和参数的类型。
-
声明委托类型
image
delegate void Sum(int x); //该方法带有一个int参数,并返回void
delegate string GetString();//该方法没有参数,返回string
delegate int GetInt(string start);//该方法带有一个string参数,并返回int//其语法类似方法的定义,但没有方法体,定义的前面要加上关键字delegate,相当于定义一个新类 //可以在委托的定义上加上常见的访问修身符:public、private、protected等 public delegate int GetAInt();
-
有两种创建委托对象的方式(两种创建方式等价的):
//1.使用带new运算符的对象创建 GetAInt firstInt = new GetAInt(ToInt); //创建委托并保存引用 Console.WriteLine("firstInt is {0}", firstInt()); //2. 使用快捷语法 GetAInt twoInt = ToInt2; //创建委托并保存引用
委托的实例代码:
class Program
{
delegate int GetAInt();//申明委托
static void Main(string[] args)
{
GetAInt firstInt = ToInt; //创建委托并保存引用
Console.WriteLine("firstInt is {0}", firstInt());
GetAInt twoInt = ToInt2; //创建委托并保存引用
Console.WriteLine("twoInt is {0}", twoInt());
//组合调用列表
GetAInt sumInt = firstInt + twoInt;
Console.ReadKey();
}
public static int ToInt()
{
Console.WriteLine("----------------ToInt-------------- is 1");
return 1;
}
public static int ToInt2()
{
Console.WriteLine("----------------ToInt2------------- is 2");
return 2;
}
}
运行后的结果:
结果
网友评论