c# .net 在内部和外部循环中迭代列表两次 - 本地副本还是引用?
大家好,
我有一个节点列表 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是同一个ListNode。没有引用类型的本地副本。
It's the same ListNode. No local copies are made of reference types.
它是同一个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.