Vb.net 列表神秘地删除了自己,似乎没有任何解释

Vb.net 列表神秘地删除了自己,似乎没有任何解释,vb.net,list,class,vertex,Vb.net,List,Class,Vertex,我现在正在做一个程序来实现Dijkstra的算法只是为了好玩。这可能远远超出了我的技能水平,但我想我还是要试一试。 到目前为止,我已经创建了一个顶点类,其中包括一个名为Connections的属性,它是它连接到的其他顶点的列表。当我使用表单向顶点图表列表添加新顶点时,它似乎不会保留并记住我分配给它的连接。我试过调试,但它似乎在课堂上被分配后神秘地消失了。任何帮助都将不胜感激 Form1.vb Vertex.vb 我在按钮1上创建了一个新的顶点。单击该顶点应添加到图表列表中。当我尝试重新填充Lis

我现在正在做一个程序来实现Dijkstra的算法只是为了好玩。这可能远远超出了我的技能水平,但我想我还是要试一试。 到目前为止,我已经创建了一个顶点类,其中包括一个名为Connections的属性,它是它连接到的其他顶点的列表。当我使用表单向顶点图表列表添加新顶点时,它似乎不会保留并记住我分配给它的连接。我试过调试,但它似乎在课堂上被分配后神秘地消失了。任何帮助都将不胜感激

Form1.vb

Vertex.vb


我在按钮1上创建了一个新的顶点。单击该顶点应添加到图表列表中。当我尝试重新填充ListBox3时,添加了顶点,但没有任何连接。您似乎觉得这条线:

Graph.Add(New Vertex(TextBox1.Text, tempConnections, tempLengths, False))
将复制指定给tempConnections的顶点对象列表。事实并非如此。只有一个顶点列表,因此稍后执行此操作时:

tempConnections.Clear()
您正在清除新顶点引用的唯一顶点列表

想想这个。假设你和我要合租一套公寓。你已经住在那里了,已经把你所有的刀叉都放在餐具抽屉里了。当我搬进来的时候,那个刀叉画现在也是我的刀叉画,也是你的。这是否意味着现在神奇地有两个餐具抽签?不,当然不是。只有一个我们都用的餐具图纸。现在,如果我清理我的餐具,如果你打开你的餐具抽屉,你希望看到什么?你的餐具抽屉是空的,对吗


这完全是同样的情况。称为面向对象编程是有原因的。编程对象的行为应该与现实生活中的对象一样,并且它们在您的程序中。这里只有一个顶点列表,您可以从多个位置引用它。如果在其中一个位置清除,则每隔一个位置将看到一个空列表。

在此处学习粘贴和格式化代码,不要发布代码的链接外部网站可能不可用…我已经从你的粘贴库中添加了代码-请单击“编辑”查看问题的源代码,查看如何添加格式化代码。非常感谢为我编辑代码的人。
Graph.Add(New Vertex(TextBox1.Text, tempConnections, tempLengths, False))
tempConnections.Clear()