最近在学《.net深入体验与实战精要》。
今天就来初步讲解下委托。
一句话:委托定义了方法类型,可以将方法当做另一个方法的参数进行传递。委托包涵的只是方法的地址,而不是数据。类似于c指针。
委托的语法:
delegate void Saydelegate(string name);
delegate 是用于声明一个应用类型,用于封装命名方法或匿名方法。
委托的使用:
现在我想用委托的方法,输入name , 将"你好"转换成不同的language输出 "你好" + name.
using System;
namespace ConsoleApplication1
{
//首先声明委托
public delegate void SayDelegate(string name);
public class ClassPeople
{
public void Saychinese(string name)
{
Console.WriteLine("你好," + name);
}
public void SayEnglish(string name)
{
Console.WriteLine("Hello,"+ name);
}
//下面一句调用SayDelegate作为参数,委托调用执行的方法
public void DoWork(string name,SayDelegate Makesay)
{
Makesay(name);
} }
class Program
{
static void Main(string[] args)
{
ClassPeople cp = new classPeople{};
//委托实例的调用
cp.DoWork("李",cp.Saychinese);
cp.DOwork("li",cp.SayEnglish)
System.Console.ReadLine();
}
}
}
多播委托
将多个方法绑定到同一个委托上,当调用这个委托的时候就会依次调用绑定的方法。
class Program
{
static void Mainstring(string[] args)
{
ClassPeople cp = new ClassPeople();
string name1="李";
SayDelegate delegate1 = cp.Saychinese; //赋值,第一次绑定
delegate1 += cp.SayEnglish; //第二次绑定一个方法
cp.Dowork(name1,delegate1); //先后调用。
System.Console.ReadLine();
}
}