目录
1.1、首先声明委托(定义一个方法的原型:返回值+参数类型+参数个数)
1、主窗体声明委托public delegate void ShowEventMessage(string message);
2、事件发送者声明事件 public event ShowEventMessage message;
一、委托的定义
1.1、首先声明委托(定义一个方法的原型:返回值+参数类型+参数个数)
注解:声明委托的关键字是delegate
public delegate int CalculatorDelegate(int a,int b)
1.2、根据委托定义一个具体的方法
定义返回值,参数类型,参数个数必须跟声明委托的返回值 参数类型和参数个数一致
int add(int a,int b){
return a+b;
}
1.3.创建委托对象,关联委托方法
CalculatorDelegate objCal=new CalculatorDelegate(add);
1.4.通过委托调用方法
objcal(10,30)
二、匿名方法和lamada表达式调用委托方法
public delegate int Sum(int a, int b);
private void button1_Click(object sender, EventArgs e)
{
Sum sum = delegate (int a, int b)
{
return a + b;
};
int ac= sum(10, 230);
MessageBox.Show(ac.ToString());
}
private void button2_Click(object sender, EventArgs e)
{
Sum sum = (int a, int b) =>
{
return a + b;
};
int ad= sum(10, 20);
MessageBox.Show(ad.ToString());
}
三、自定义泛型委托
//声明一个泛型委托事件
public delegate T Sum<T>(T a, T b);
3.1种方式实现委托
3.1.1 一般方式
步骤:1、定义委托方法,2、定义委托变量,3、变量关联方法,4.激发委托
定义委托方法:
//【1】创建委托方法
public static int sum( int a,int b)
{
return a + b;
}
public static double sum(double a, double b)
{
return a - b;
}
2、定义委托变量并关联委托方法
//【2】创建委托变量并关联,s 和s1是变量
Sum<int> s = sum;//关联方法
Sum<double> s1 = sum;
3、调用委托
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(s(10, 20).ToString());
MessageBox.Show(s1(10, 20).ToString());
;
}
3.1.2调用委托方式,匿名方法
//匿名方法调用泛型委托
private void button1_Click(object sender, EventArgs e)
{
Sum<int> sum = delegate (int a, int b)
{
return a + b;
};
int ac= sum(10, 230);
MessageBox.Show(ac.ToString());
}
3.1.3调用方式lamada表达式
//lamada表达式调用泛型委托
private void button2_Click(object sender, EventArgs e)
{
Sum<double> sum = (double a, double b)=>
{
return a -b;
};
double ad= sum(10.0, 20.0);
MessageBox.Show(ad.ToString());
}