我是c#的新手我在这里有点混乱。我如何访问add&减法方法因为有两个参数?
public delegate double PerformCalculation(double n1, double n2);
class DelegateTest
{
public static void Main()
{
PerformCalculation rv = new PerformCalculation(Add);
rv += Subtract;
double x = rv(10,20);
}
public double Add(double n1, double n2)
{
Console.WriteLine("Calling Add ({0},{1})", n1, n2);
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
Console.WriteLine("Calling Subtract ({0},{1})", n1, n2);
return n1 - n2;
}
}
答案 0 :(得分:1)
参数的数量并不相关;你的两个函数都匹配相同的签名(double, double
),因此你可以创建一个委托。
C#使用委托链接。 Main()
的前两行执行以下操作:
rv
变量,然后,)将Add
方法添加到委托调用列表中。Subtract
方法添加到委托调用列表中。当您的方法调用时,在下一行,它按顺序调用委托。首先它调用Add
(带有两个参数),然后调用Subtract
(使用相同的两个参数)。
由于没有通过引用传递任何内容,因此在实验结束时x
中存储的结果应该是Subtract
函数的结果。
如果你喜欢两者的结果,你应该做一些更全局确定的事情,比如设置一个类成员而不是只存储一个(最终)被覆盖的值。
这就是说,您所做的并不是完全 .NET中委托的预期用途之一。但它没有错误。
除了测试平台使用代表的能力之外,您能描述一下您要完成的任务吗?