我有一个多播委托问题。
这是基于C#In A Nutshell Version 5中的一些代码。
using System;
using System.Collections;
using System.Collections.Generic;
public delegate int Transformer(int x);
class MainClass
{
static int Square(int x) { return x * x; }
static int Cube(int x) { return x * x * x; }
static void Main()
{
Transformer t, q, multi;
t = Square;
q = Cube;
multi = t + q;
for (int i = 1; i < 5; i++)
Console.WriteLine(multi(i));
}
}
输出仅来自Cube
。为什么添加失败?
答案 0 :(得分:1)
首先运行Square
方法,然后为每个值运行Cube
方法。 multi()
的返回值是调用列表中最后一个方法的返回值,因此您只能看到Cubes
的值。
添加不会使其按预期工作。您可以通过在Console.WriteLine
方法中添加Square
来验证这一点。