2016-09-16 82 views
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 

は構造からオブジェクトを削除する簡単な方法はありますか?私はむしろ、空のコピーを作成してから、古いものを破壊する前にアクティブなものをコピーすることを避けたいと思います。

+0

あなたの構造は実際にはリストやコレクションではありません。単一のオブジェクトに関する単なる情報です。だからあなたがしなければならないコードのいくつかを投稿していない限り、 'dict_tracking.Remove(Tracking.hash)'を使って辞書からオブジェクトを削除することです。 – FloatingKiwi

+0

ええと、私は既にRemoveメソッドを使っていますが、私のプログラムでは新しいオブジェクトが登場するにつれて成長し続けるため、実際には削除されていないように見えます。構造物の内容を検査する簡単な方法はありますか?確認するために何が入っているか確認できますか? –

+0

構造はクラスと非常によく似ています。彼らはコレクションではありません。だからあなたのものは5つの文字列しか含んでいません。デバッガを使用して、dict_trackingコレクションの内容を確認してください。あなたのメモリリークはあなたのアプリケーションのどこかにあります。 jetbrains dotMemoryトライアル評価を使用するか、残りのコードを投稿してください。 – FloatingKiwi

答えて

0

あなたはそうする必要はありません。

あなたの構造は基本的に、あなたのオブジェクトに関するいくつかのデータを持つ単なるコンテナです。オブジェクトが辞書から削除されると、このコンテナが削除されます。したがって、手動でデータを削除する必要はありません。

義務的な車の類推の場合: あなたの車の灰皿を空にする必要はありません。その巨大なプレスの1つであなたの車を破壊する。

関連する問題