如何从C#中的Lambda表达式中删除列表项?

时间:2018-08-09 16:53:16

标签: c#

如果我有这个

private static List<Action> actions = new List<Action>();

private static void Main()
{
    for (var i = 0; i < 10; i += 1)
    {
        Action action = async () => {
            // want to remove this specific lambda item from the "actions" variable. 
            // is there something like this:
            /*
                Action this_action = this;
                actions.Remove(this_action);
            */
        };

        actions.Add(action);
    }

    Parallel.Invoke(actions.ToArray());

    Console.Write("\nPress any key to exit...");
    Console.ReadKey();
}

如何正确将其从列表中删除。我需要某种自我参考吗?

注意:
刚执行的操作应该被删除。这些动作的完成顺序可能与将其添加到列表的顺序不同,但是执行的动作应该是删除的动作。而且我不想同时删除它们,只能等它们完成后再删除。

谢谢

1 个答案:

答案 0 :(得分:2)

您可以仅使用对-- TypeError Traceback (most recent call last) <ipython-input-9-b1b7b1c195f7> in <module>() 367 368 # Set up the Player's chips --> 369 player_chips = Chips() # remember the default value is 100 370 371 # Prompt the Player for their bet: TypeError: __init__() missing 1 required positional argument: 'total' 的引用来删除操作的实例。关闭将确保引用指向正确的对象。

action

有关有效的示例,请参见Fiddle