C# 将一个 Action<> 传递给另一个 Action<>

C# passing an Action<> into another Action<>

我是代理的新手,我正在尝试传递一个 Action<> 作为另一个 Action<> 的参数。 例如,(考虑到代码的可重用性)我试图制作一个循环动作并将其他动作传递给它以减少代码中的循环次数:

Action<int, Action<Control, Control>> loop = (int stop, Action<Control, Control> action) =>
{
    for (int i = 0; i < stop; i++)
    {
        for (int j = 0; j < stop; j++)
        {
            <action> pass Add;
        }
    }
};

Action<Control, Control> Add = (Control Parent, Control Child) => Parent.Controls.Add(Child);

主要的 objective 是能够重新使用双 for 循环,这样我就可以将其中的动作与其他动作混合和匹配。

Action<int, Action<Control, Control>> loop = (int stop, Action<Control, Control> action) =>
{
    for (int i = 0; i < stop; i++)
    {
        for (int j = 0; j < stop; j++)
        {
            //// invoke action with real arguments
            // action(controlParent, controlChild);
        }
    }
};

Action<Control, Control> Add = (Control Parent, Control Child) => Parent.Controls.Add(Child);

loop(1, Add);

如果您希望主动作中的循环使用另一个动作,您的动作用法还不错。