动作及LT;> object作为参数来运行和使用它

时间:2014-06-04 07:12:38

标签: c# .net lambda action

我有这个功能作为遍历我的树视图的解决方案:

protected void PerformActionOnNodesRecursive(TreeViewNodeCollection nodes, Action<TreeViewNode> action)
{
    foreach (TreeViewNode node in nodes)
    {
        action(node);
        if (node.Nodes.Count > 0)
            PerformActionOnNodesRecursive(node.Nodes, action);
    }
}

但我无法理解的是如何实现我的操作或每个节点所需的操作。

任何人都可以告诉我如何使用此操作对象并定义自定义操作吗?

2 个答案:

答案 0 :(得分:4)

你打电话给Action就像这样:

PerformActionOnNodesRecursive(node.Nodes, (node) => node.SomeProperty = "123");

或者:

PerformActionOnNodesRecursive(node.Nodes, (node) => 
    {
        // you can place multiple statements here.
    });

或者:

PerformActionOnNodesRecursive(node.Nodes, (node) => CallSomeOtherMethod(node));

有关lambda表达式的一些有用信息可以在MSDN找到。

答案 1 :(得分:0)

您可以按如下方式创建Action

PerformActionOnNodedRecursive(node, new Action(t => t.Text = "Test"));

现在每个子节点和节点本身都将收到文本“测试”