独自コレクションの検索、削除が失敗する
- 題名: 独自コレクションの検索、削除が失敗する
- 著者: YZR
- 日時: 2008/03/26 19:58:40
- ID: 21714
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 独自コレクションの検索、削除が失敗する
- 著者: やじゅ
- 日時: 2008/03/26 20:53:41
- ID: 21717
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 独自コレクションの検索、削除が失敗する
- 著者: まどか
- 日時: 2008/03/26 23:23:22
- ID: 21720
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 独自コレクションの検索、削除が失敗する
- 著者: YZR
- 日時: 2008/03/27 2:17:49
- ID: 21722
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: 独自コレクションの検索、削除が失敗する
- 著者: Azulean
- 日時: 2008/03/27 7:12:56
- ID: 21723
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: 独自コレクションの検索、削除が失敗する
- 著者: Azulean
- 日時: 2008/03/27 7:18:58
- ID: 21724
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: 独自コレクションの検索、削除が失敗する
- 著者: まどか
- 日時: 2008/03/27 9:44:14
- ID: 21725
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[6]: 独自コレクションの検索、削除が失敗する
- 著者: YZR
- 日時: 2008/03/27 11:55:07
- ID: 21729
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[7]: 独自コレクションの検索、削除が失敗する
- 著者: まどか
- 日時: 2008/03/27 13:13:18
- ID: 21730
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[8]: 独自コレクションの検索、削除が失敗する
- 著者: YZR
- 日時: 2008/03/27 14:18:17
- ID: 21731
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
【解決したい問題】
お世話になっております。
独自コレクションを作成したのですが追加、挿入、RemoveAt による削除処理は、うまくいくのですが、含まれているか、検索、削除処理がうまくいきません。
よろしくお願い致します。
【解決するために何をしたか】
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim m_MyDataCollection As New MyDataCollection
m_MyDataCollection.Add(New MyData(0, "a"))
m_MyDataCollection.Add(New MyData(1, "b"))
m_MyDataCollection.Add(New MyData(2, "c"))
m_MyDataCollection.Add(New MyData(3, "d"))
m_MyDataCollection.Add(New MyData(4, "e"))
m_MyDataCollection.Add(New MyData(5, "f"))
Dim i As Integer
For i = 0 To m_MyDataCollection.Count - 1
System.Diagnostics.Debug.Print(m_MyDataCollection(i).Name & "," & m_MyDataCollection(i).Position)
Next i
System.Diagnostics.Debug.Print("追加処理 " & m_MyDataCollection.Count)
m_MyDataCollection.RemoveAt(2)
For i = 0 To m_MyDataCollection.Count - 1
System.Diagnostics.Debug.Print(m_MyDataCollection(i).Name & "," & m_MyDataCollection(i).Position)
Next i
System.Diagnostics.Debug.Print("RemoveAt による削除処理 " & m_MyDataCollection.Count)
m_MyDataCollection.Insert(2, New MyData(2, "C"))
For i = 0 To m_MyDataCollection.Count - 1
System.Diagnostics.Debug.Print(m_MyDataCollection(i).Name & "," & m_MyDataCollection(i).Position)
Next i
System.Diagnostics.Debug.Print("挿入処理 " & m_MyDataCollection.Count)
'以下の含まれているか、検索、削除処理がうまくいきません。
'True のはずが False を返す
If m_MyDataCollection.Contains(New MyData(3, "d")) = True Then
System.Diagnostics.Debug.Print("含まれている")
Else
System.Diagnostics.Debug.Print("含まれているいません")
End If
'3のはずが -1 を返す
Dim n As Integer = m_MyDataCollection.IndexOf(New MyData(3, "d"))
System.Diagnostics.Debug.Print("IndexOf による検索処理 " & n)
'指定された項目は、指定されたコレクションに見つからなかったため、削除できませんになる。
m_MyDataCollection.Remove(New MyData(3, "d"))
System.Diagnostics.Debug.Print("Remove による削除処理 " & n)
End Sub
Public Class MyData
Private m_Position As Integer
Private m_Name As String
Public Sub New()
m_Position = -1
m_Name = ""
End Sub 'New
Public Sub New(ByVal _Position As Integer, ByVal _Name As String)
m_Position = _Position
m_Name = _Name
End Sub
Public Property Position() As Integer
Get
Return m_Position
End Get
Set(ByVal Value As Integer)
m_Position = Value
End Set
End Property
Public Property Name() As String
Get
Return m_Name
End Get
Set(ByVal Value As String)
m_Name = Value
End Set
End Property
End Class
Public Class MyDataCollection
Inherits CollectionBase
Default Public Property Item(ByVal index As Integer) As MyData
Get
Return CType(List(index), MyData)
End Get
Set(ByVal value As MyData)
List(index) = value
End Set
End Property
Public Function Add(ByVal value As MyData) As Integer
Return List.Add(value)
End Function 'Add
Public Function IndexOf(ByVal value As MyData) As Integer
Return List.IndexOf(value)
End Function 'IndexOf
Public Sub Insert(ByVal index As Integer, ByVal value As MyData)
List.Insert(index, value)
End Sub 'Insert
Public Sub Remove(ByVal value As MyData)
List.Remove(value)
End Sub 'Remove
Public Function Contains(ByVal value As MyData) As Boolean
Return List.Contains(value)
End Function 'Contains
Protected Overrides Sub OnValidate(ByVal value As Object)
If Not GetType(MyData).IsAssignableFrom(value.GetType()) Then
Throw New ArgumentException("value must be of type MyData.", "value")
End If
End Sub 'OnValidate
End Class 'MyDataCollection