多播委托 即包含多个方法的委托,称为多播委托
如果连续调用多个方法,委托的签名就必须返回void,否则就只能得到委托的最后一个方法的结果.
delegate void GetResult(int num1, int num2);
int result = 0;
private void Test()
{
GetResult operations = GetSum;
operations += GetMutiple;
operations.Invoke(2, 3);
Console.WriteLine(result); // 结果为11 两个方法均改变了全局变量result的值
}
private void GetSum(int num1,int num2)
{
result += num1 + num2;
}
private void GetMutiple(int num1, int num2)
{
result += num1 * num2;
}
int result = 0;
private void Test()
{
GetResult operations = GetSum;
operations += GetMutiple;
operations.Invoke(2, 3);
Console.WriteLine(result); // 结果为11 两个方法均改变了全局变量result的值
}
private void GetSum(int num1,int num2)
{
result += num1 + num2;
}
private void GetMutiple(int num1, int num2)
{
result += num1 * num2;
}
使用匿名方法实现与上面相同的结果
delegate void GetResult(int num1, int num2);
int result = 0;
private void Test()
{
GetResult getResult = delegate(int num1,int num2)
{
result = num1 + num2 + num1 * num2;
};
getResult(2, 3);
Console.WriteLine(result);
}
int result = 0;
private void Test()
{
GetResult getResult = delegate(int num1,int num2)
{
result = num1 + num2 + num1 * num2;
};
getResult(2, 3);
Console.WriteLine(result);
}
使用Lambda表达式
GetResult getResult = (int num1,int num2) =>
{
result = num1 + num2 + num1 * num2;
};
getResult(2, 3);
Console.WriteLine(result);
{
result = num1 + num2 + num1 * num2;
};
getResult(2, 3);
Console.WriteLine(result);
浙公网安备 33010602011771号