VB.Net/Generics/Generic Dictionary

Материал из VB Эксперт
Перейти к: навигация, поиск

Generic Dictionary: save and get data

<source lang="vbnet"> Imports System Imports System.Windows.Forms Imports System.Collections.Generic Imports System.ruponentModel Public Class MainClass

  Shared Sub Main()
       Dim pair_dictionary As New PairDictionary(Of Integer, String, String)
       pair_dictionary.Add(10, "A", "A")
       pair_dictionary.Add(32, "B", "B")
       pair_dictionary.Add(17, "C", "C")
       " Print the values for index 32.
       Dim value1 As String = ""
       Dim value2 As String = ""
       pair_dictionary.GetItem(32, value1, value2)
       Console.WriteLine(value1 & ", " & value2)
  End Sub 

End Class

Public Class PairDictionary(Of KeyType, DataType1, DataType2)

   Private Structure DataPair
       Public Data1 As DataType1
       Public Data2 As DataType2
       Public Sub New(ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
           Data1 = data_value1
           Data2 = data_value2
       End Sub
   End Structure
   Private m_Dictionary As New Dictionary(Of KeyType, DataPair)
   Public ReadOnly Property Count() As Integer
       Get
           Return m_Dictionary.Count
       End Get
   End Property
   Public Sub Add(ByVal key As KeyType, ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
       m_Dictionary.Add(key, New DataPair(data_value1, data_value2))
   End Sub
   Public Sub Clear()
       m_Dictionary.Clear()
   End Sub
   Public Function ContainsKey(ByVal key As KeyType) As Boolean
       Return m_Dictionary.ContainsKey(key)
   End Function
   " Return a data pair.
   Public Sub GetItem(ByVal key As KeyType, ByRef data_value1 As DataType1, ByRef data_value2 As DataType2)
       Dim data_pair As DataPair = m_Dictionary.Item(key)
       data_value1 = data_pair.Data1
       data_value2 = data_pair.Data2
   End Sub
   " Set a data pair.
   Public Sub SetItem(ByVal key As KeyType, ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
       m_Dictionary.Item(key) = _
           New DataPair(data_value1, data_value2)
   End Sub
   " Return a collection containing the keys.
   Public ReadOnly Property Keys() As System.Collections.ICollection
       Get
           Return m_Dictionary.Keys()
       End Get
   End Property
   " Remove a particular entry.
   Public Sub Remove(ByVal key As KeyType)
       m_Dictionary.Remove(key)
   End Sub

End Class

      </source>


Remove value from geneic dictionary

<source lang="vbnet"> Imports System Imports System.Windows.Forms Imports System.Collections.Generic Imports System.ruponentModel Public Class MainClass

  Shared Sub Main()
       Dim pair_dictionary As New PairDictionary(Of Integer, String, String)
       pair_dictionary.Add(10, "A", "A")
       pair_dictionary.Add(32, "B", "B")
       pair_dictionary.Add(17, "C", "C")
       pair_dictionary.Remove(32)
       " Print the values for index 32.
       Dim value1 As String = ""
       Dim value2 As String = ""
       Try
           pair_dictionary.GetItem(32, value1, value2)
       Catch ex As Exception
           Console.WriteLine(ex.Message)
       End Try
       Console.WriteLine("Value:" & value1 & ", " & value2)
  End Sub 

End Class

Public Class PairDictionary(Of KeyType, DataType1, DataType2)

   Private Structure DataPair
       Public Data1 As DataType1
       Public Data2 As DataType2
       Public Sub New(ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
           Data1 = data_value1
           Data2 = data_value2
       End Sub
   End Structure
   Private m_Dictionary As New Dictionary(Of KeyType, DataPair)
   Public ReadOnly Property Count() As Integer
       Get
           Return m_Dictionary.Count
       End Get
   End Property
   Public Sub Add(ByVal key As KeyType, ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
       m_Dictionary.Add(key, New DataPair(data_value1, data_value2))
   End Sub
   Public Sub Clear()
       m_Dictionary.Clear()
   End Sub
   Public Function ContainsKey(ByVal key As KeyType) As Boolean
       Return m_Dictionary.ContainsKey(key)
   End Function
   " Return a data pair.
   Public Sub GetItem(ByVal key As KeyType, ByRef data_value1 As DataType1, ByRef data_value2 As DataType2)
       Dim data_pair As DataPair = m_Dictionary.Item(key)
       data_value1 = data_pair.Data1
       data_value2 = data_pair.Data2
   End Sub
   " Set a data pair.
   Public Sub SetItem(ByVal key As KeyType, ByVal data_value1 As DataType1, ByVal data_value2 As DataType2)
       m_Dictionary.Item(key) = _
           New DataPair(data_value1, data_value2)
   End Sub
   " Return a collection containing the keys.
   Public ReadOnly Property Keys() As System.Collections.ICollection
       Get
           Return m_Dictionary.Keys()
       End Get
   End Property
   " Remove a particular entry.
   Public Sub Remove(ByVal key As KeyType)
       m_Dictionary.Remove(key)
   End Sub

End Class

      </source>