c# .net 在内部和外部循环中迭代列表两次 - 本地副本还是引用?

发布于 2024-08-10 01:50:23 字数 553 浏览 3 评论 0原文

大家好,

我有一个节点列表 ListNode,如果两个节点之间有边/链接,我想在两个节点之间画一条线。到目前为止,我的方法是:

public void drawGraphInBIM(ref BIM bim)
{
    foreach (Node nodeOuter in ListNode)
    {
        foreach (Node nodeInner in ListNode)
        {
            if (areNodesLinked(nodeOuter, nodeInner))
            {
                bim.drawPolygon(nodeOuter.XYZ, nodeInner.XYZ);
            }
        }
    }
}

我想知道如果每个循环都有 ListNode 的本地副本,或者只有一个引用并且 nodeOuter 和 nodeInner 在同一个 ListNode 上运行,该怎么办?

有没有更好的方法来解决这个问题?

干杯,

达维特

Hallo everyone,

i have a list of nodes ListNode and i want to draw a line between two nodes if there is an edge / link between them. My approach so far is:

public void drawGraphInBIM(ref BIM bim)
{
    foreach (Node nodeOuter in ListNode)
    {
        foreach (Node nodeInner in ListNode)
        {
            if (areNodesLinked(nodeOuter, nodeInner))
            {
                bim.drawPolygon(nodeOuter.XYZ, nodeInner.XYZ);
            }
        }
    }
}

I am wandering how the if there is a local copy of ListNode for each loop or is there just a reference and nodeOuter and nodeInner are operating on the same ListNode?

Is there a better approach to this problem?

Cheers,

Dawit

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏末染殇 2024-08-17 01:50:23

这是同一个ListNode。没有引用类型的本地副本。

It's the same ListNode. No local copies are made of reference types.

祁梦 2024-08-17 01:50:23

它是同一个ListNode 集合。你不是在复制它。

您看到速度变慢的原因是您当前的算法是 O(N^2)。它将对 N 个项目进行 N^2 次迭代,因此随着集合的增长,算法会呈指数级减慢。

It is the same ListNode collection. You are not copying it.

The reason you're seeing this slow down is because you're current algorithm is O(N^2). It's going to do N^2 iterations for N items, so as your collection grows, the algorithm slows down exponentially.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文