委托(delegate)是⼀种存储函数引⽤的类型。
委托的定义指定了⼀个返回类型和⼀个参数列表
定义了委托之后,就可以声明该委托类型的变量,接着就可以把⼀个返回类型跟参数列表跟委托⼀样的函数赋值给这个变量。
委托的使⽤分两步
结构体,枚举的使⽤同上都分为定义和声明
整数类型、数组类型、字符串类型都是直接声明变量的,因为类型的定义已经完成了(CLR中已经完成定义)
委托呢,就是⼀个函数类型,可以把⼀个函数赋值给委托类型。
定义委托的时候,跟函数有点像,只不过没有函数体。
只能赋值-参数和返回值⼀样的函数。
c#delegate double MyDelegate(double param1,double param2); // delegate 定义委托
static double Multiply(double param1,double param2){
return param1*param2;
}
static double Divide(double param1,double param2){
return param1/param2;
}
double param1 = 34; double param2 =2;
MyDelegate de;
de = Multiply; //执行乘法
de(param1,param2);
de = Divide; //执行除法
de(param1,param2);
案例 有A和B开发人员 功能调用
c# delegate void OnDieDelegate();
static void Play(OnDieDelegate onDie)
{
Console.WriteLine("做任务");
Console.WriteLine("玩家正在战斗");
Console.WriteLine("死亡");
//
if (onDie != null)
{
onDie();
}
}
static void ShowDieUI()
{
Console.WriteLine("显示游戏死亡后的UI");
Console.WriteLine("返回首页UI");
}
static void Main(string[] args)
{
// A主角
// BUI 菜单
Play(null);
}