如何使用匿名方法计数?

问题描述 投票:-1回答:1

我有一个IntList类的实现。我应该:使用匿名方法的功能来引用其封闭方法中的局部变量,并使用定义的“行为”方法来计算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();
    }
}
c# delegates local-variables anonymous-methods
1个回答
0
投票

我认为这部分是“匿名方法”(因为它是内联定义的,并且没有方法名称):

© www.soinside.com 2019 - 2024. All rights reserved.