delegate int NumberChange(int n);
public static int MultOne(int num)
{
return num * 3;
}
public static int MultTwo(int num)
{
return num * 2;
}
static void Main(string[] args)
{
NumberChange nc1 = new NumberChange(MultOne);
NumberChange nc2 = new NumberChange(MultTwo);
NumberChange nc;
nc = nc2 + nc1;
int a = nc1(5);
int b = nc2(5);
int c = nc(5);
Console.WriteLine(c);
}
两个委托相加,输出结果是10,为什么结果不是两个委托的和,而是nc2的值,谢谢
输出是15,不是10
nc = nc1 + nc2;
委托相加的意思是指,当调用nc时,**将按顺序调用nc1和nc2**,
也就是说先调用nc1
c = nc1(5) // 此时c=15
然后调用 nc2
c = nc2(5) //此时c =10
最终输出c值是10。
你可以将题目代码中
nc = nc2 + nc1;
更改为
nc = nc1 + nc2;
再观察结果,以增加对委托相加的认识。
你逻辑有问题啊
int a = nc1(5);
int b = nc2(5);
这是干什么用的,你只输出了int c = nc(5);
委托中的加号相当于事件的执行顺序没有数学中的“+”的意思,所以执行结果相当于nc(5)=nc2(5)