Nolanamy
Nolanamy
采纳率15.8%
2017-04-26 05:55

c#委托的问题,请教一下,谢谢

    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的值,谢谢
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • fight_in_dl 战在春秋 4年前

    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;
    再观察结果,以增加对委托相加的认识。

    点赞 3 评论 复制链接分享
  • fsdad IT菜鸟菜菜菜 4年前

    委托中的加号相当于事件的执行顺序没有数学中的“+”的意思,所以执行结果相当于nc(5)=nc2(5)

    点赞 评论 复制链接分享
  • qq_34249720 qq_34249720 4年前

    你逻辑有问题啊
    int a = nc1(5);
    int b = nc2(5);
    这是干什么用的,你只输出了int c = nc(5);

    点赞 评论 复制链接分享
  • nihao0502 搭码 4年前

    输出是15,不是10

    点赞 评论 复制链接分享

相关推荐