0
我有一个VB.Net结构,其中包含一堆关于对象的数据。对象被添加到这个结构中,并且往往有一个有限的生命,所以随着时间的推移,我的结构最终会包含已经过期的对象。VB.Net:从结构中删除项目
在他们的一生中,他们的一些属性发生了变化,所以我有一本字典,以便我可以轻松地找到适当的对象,以便我需要更新它。
但是,当一个对象到期时,我想从结构中删除它。我可以从字典中删除它,但无法弄清楚如何从结构中删除它。
这里是我的结构:
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Main()
End Sub
Public Structure ObjectList
Public hash As String
Public xPosition As String
Public yPosition As String
Public zPosition As String
Public speed As String
Public Sub New(ByVal _hash As String, ByVal _xposition As String, ByVal _yposition As String, ByVal _zposition As String, ByVal _speed As String)
hash = _hash
xPosition = _xposition
yPosition = _yposition
zPosition = _zposition
speed = _speed
End Sub
End Structure
Sub Main()
Dim Tracking As ObjectList
Dim dict_Tracking As New Dictionary(Of String, ObjectList)
' Define a new object
Tracking.hash = "4D010AEF"
Tracking.xPosition = "3.5"
Tracking.yPosition = "7.2"
Tracking.zPosition = "8.1"
Tracking.speed = "16.2"
' Add hash to dictionary so that we can find it easily without searching entire dictionary
dict_Tracking.Add(Tracking.hash, Tracking)
End Sub
End Class
有一种简单的方法来消除从结构的对象?我宁愿避免创建一个空副本,然后复制活动的副本,然后摧毁旧副本,如果可以的话。
您的结构实际上不是一个列表或集合。这只是关于单个对象的信息。所以,除非你没有发布一些代码,否则你需要做的就是用'dict_tracking.Remove(Tracking.hash)'从字典中移除对象' – FloatingKiwi
嗯,我已经按照你的建议使用Remove方法,但是我的程序需要的内存在新对象进入时不断增长,所以它看起来并没有真正的去除它们,除非有其他事情正在发生,我错过了。是否有任何简单的方法来检查结构的内容,以便我可以看到其中的内容来确认两种方式? –
结构与类非常相似。他们不是集合。所以你的只包含5个字符串。使用调试器并查看dict_tracking集合中的内容。你的内存泄漏在应用程序的其他地方。尝试使用jetbrains dotMemory试用评估或发布剩余的代码。 – FloatingKiwi