什么是委托?
——如果我们要把方法当做参数来传递的话,就要用到委托,简单的来说委托是一个类型,这个类型可以赋值一个方法的引用。
声明委托
在C#中使用一个类分两个阶段,首选定义这个类,告诉编译器这个类由什么字段和方法组成的,然后使用这个类实例化对象。在我们使用委托的时候,也需要经过这两个阶段,首先定义委托,告诉编译器我们这个委托可以指向哪些类型的方法,然后,创建该委托的实例。
定义委托的语法如下:
delegate void IntMethodInvoker(int x);
定义了一个委托叫做IntMethodInvoker,这个委托可以指向什么类型的方法呢?
这个方法要带有一个int类型的参数,并且方法的返回值是void的。
定义一个委托要定义方法的参数和返回值,使用关键字delegate定义。
定义委托的其他案例:
delegate double TwoLongOp(long first,long second);
delegate string GetAString();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 委托
{
class Program
{
// 定义了一个委托类型,这个委托类型的名字叫做GetAString
private delegate string GetAString();
static void Main(string[] args)
{
int x = 40;
GetAString a = new GetAString(x.ToString); // a指向了X中的tostring方法
string s = a(); // 通过委托实例去调用x中的tostring方法
Console.WriteLine(s);
Console.ReadKey();
}
}
}