【问题标题】:C# Adding Visible Nodes to Node ArrayC# 将可见节点添加到节点数组
【发布时间】:2014-03-28 07:39:31
【问题描述】:

我正在尝试创建一个函数,它将树中的每个可见节点添加到节点数组中,然后返回它。

这是我目前拥有的代码,但正在努力弄清楚如何添加它们。

注意:树最多有 8 个节点。

    private Node[] activeClients(AdvTree tree)
    {
        Node[] activeClients = new Node[8];

        foreach (Node client in tree.Nodes)
        {
            if (client.IsVisible)
            {
                //Add Visible Node to activeClients Node Array
            }
        }

        return activeClients;
    }

【问题讨论】:

  • activeClients.Add(client) 不起作用吗?
  • 我没有检查添加定义。
  • 等一下,太早了。在数组中,您使用索引设置它。例如 activeClients[0] = 客户端。最好使用 List 并使用 append 将客户端添加到其中。所以你不必使用索引和范围检查。

标签: c# arrays tree add


【解决方案1】:

可能是这样的:

var visibleNodes = tree.Nodes.Where(client=>client.IsVisible)

特别是如果您谈论的是小数字(8 个元素)而不是计算密集型函数,那么像 List<T>IEnumerable<T> 这样的动态数组(或向量)是正确的选择。

通过这种方式,您的代码将来也可以更好地扩展。

【讨论】:

  • 如果你绝对需要一个数组,那么你也可以在之后添加ToArray() :-)
【解决方案2】:

实际上我发现我不需要节点数组,但感谢大家的帮助。

我改用 NodeCollection,它非常适合我的需求。

    private NodeCollection activeClients(AdvTree tree)
    {
        NodeCollection activeClients = new NodeCollection();

        foreach (Node client in tree.Nodes)
        {
            if (client.IsVisible)
            {
                //Add Visible Node to activeClients Node Array
                activeClients.Add(client, eTreeAction.Code);
            }
        }

        return activeClients;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多