我必须编写 Eve 类才能在下面编写一些代码:
class MainClass
{ int sum = 5;
public void add (int x)
{
sum += x;
}
public static void write (int x)
{
Console.WriteLine("x = " + x);
}
public static void Main (string[] args)
{
Eve p = new Eve();
MainClass m = new MainClass();
p.registrate(m.add);
p.registrate(write);
p.registrate (delegate (int x) {
System.Console.WriteLine(" I have {0} ", x);
});
p.registrate (x => System.Console.WriteLine (" Square : {0} ", x * x));
p.run(10);
p.run(5);
Console.WriteLine(" Sum is {0} ", m.sum);
}
}
输出:
x = 10
我有 10 个
广场:100
x = 5
我有 5
广场:25
总和是 20
所以认为我必须使用代表。并且方法 registarte 应该将委托添加到委托数组中。
我写了这样的代码,但我肯定是赖特。
public class Eve
{
int i;
public Eve()
{
i = 0;
}
public delegate void ComputeDelegate(int x);
ComputeDelegate[] delegates = new ComputeDelegate[2];
public void registrate(ComputeDelegate a)
{
if (i == 2) i = 0;
delegates[i] += a;
i++;
}
public void run()
{
//delegates[0].;
}
}
public class MainClass
{
int sum = 5;
public void add(int x)
{
sum += x;
}
public void write(int x)
{
Console.WriteLine("x = " + x);
}
static void Main()
{
Eve proc1 = new Eve();
MainClass m = new MainClass();
proc1.registrate(m.add);
proc1.registrate(m.write);
}
}
}
我有问题如何编写方法运行?或者这相同,但以另一种方式,我如何在委托数组中使用午餐方法?