【发布时间】:2020-03-25 23:42:18
【问题描述】:
我有一个 IntList 类的实现。我应该:使用匿名方法的能力在其封闭方法中引用局部变量,并使用定义的“Act”方法来计算 IntList 元素的总和(无需自己编写任何循环)。这是我到目前为止所做的,但我怀疑它是否正确。任何建议和解释都会在这里帮助我
在这种情况下,我的匿名方法的封闭方法是什么?
public delegate bool IntPredicate(int x);
public delegate void IntAction(int x);
class IntList : List<int>
{
public IntList(params int[] elements) : base(elements)
{
}
public void Act(IntAction f)
{
foreach(int i in this)
{
f(i);
}
}
public IntList Filter(IntPredicate p)
{
IntList res = new IntList();
foreach (int i in this)
{
if (p(i))
{
res.Add(i);
}
}
return res;
}
}
class Program
{
static void Main(string[] args)
{
// code here
IntList xs = new IntList();
// adding numbers, could be random. whatever really. Here just 0..29
for(int i =0; i<30; i++)
{
xs.Add(i);
}
int total = 0;
xs.Act(delegate (int x)
{
total = total + x;
Console.WriteLine(total);
}
);
Console.ReadKey();
}
}
【问题讨论】:
-
“我怀疑它是否正确。任何建议和解释都会对我有所帮助”——这对 Stack Overflow 的要求太宽泛了。一方面,您需要知道它是否正确。如果它是正确的,你甚至不需要发布一个问题。如果它不正确,您需要能够准确地解释它在什么方面是不正确的。该程序做了什么,而您希望它做什么? 具体来说是什么让你自己搞不清楚?
-
当然可以,但我不知道这就是我要问的原因。我将重新制定请求
-
“我不知道是哪个” -- Stack Overflow 社区无法在没有实际问题的情况下为问题提供好的答案.您必须能够准确地阐明代码应该做什么以及它现在正在做什么,这与它应该做什么不同。如果你不能,那么你的问题应该(并且很可能会)被关闭和删除。
-
总结元素,而不编写自己的循环?听起来像是 LINQ 的一个案例。 |或者可能是您的目标是覆盖添加、删除和清除功能,以便您可以在添加/删除内容时进行总结。
标签: c# delegates local-variables anonymous-methods