C#传递一个动作<>进入另一个动作<>

时间:2015-01-20 07:38:52

标签: c# loops parameters delegates 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);

主要目标是能够以这样的方式重复使用double for循环,我可以将其中的动作与其他动作混合和匹配。

2 个答案:

答案 0 :(得分:1)

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);

答案 1 :(得分:0)

如果您希望使用其他操作在主操作中循环,则您的操作用法并不错。