1

我最近遇到了字典只允许每个键 1 个值的问题。阅读周围,我看到了多个建议通过类创建类型的答案。现在授予我对类的了解不多,我一直认为类只是函数和子类的集合。他们为什么可以创建数据类型,您如何使用它们来创建数据类型?

4

3 回答 3

5

a 的基本定义由Dictionary给出Dictionary(Of type1, type2),其中类型可以是任何东西,即原始类型(StringDouble等)或您创建的类型(Class例如,通过 )。您也可以将它们视为“单个变量”或内部集合(ListsArrays等)。一些例子:

 Dim dict = New Dictionary(Of String, List(Of String))

 Dim tempList = New List(Of String)
 tempList.Add("val11")
 tempList.Add("val12")
 tempList.Add("val13")

 dict.Add("1", tempList)

 Dim dict2 = New Dictionary(Of String, type2)
 Dim tempProp = New type2
 With tempProp
     .prop1 = "11"
     .prop2 = "12"
     .prop2 = "13"
 End With
 dict2.Add("1", tempProp)

 Dim dict3 = New Dictionary(Of String, List(Of type2))
 Dim tempPropList = New List(Of type2)
 Dim tempProp2 = New type2
 With tempProp2
     .prop1 = "11"
     .prop2 = "12"
     .prop2 = "13"
 End With
 tempPropList.Add(tempProp2)

 dict3.Add("1", tempPropList)

其中type2由以下类定义:

Public Class type2
    Public prop1 As String
    Public prop2 As String
    Public prop3 As String
End Class

注意:您可以随意更改上述示例中的类型;还将任何内容(列表、自定义类型等)都放在ValuesKeys中。

NOTE2:VB.NET 中的原始类型(例如:)Double基本上是一堆变量(在给定框架内全局声明)和函数:(Double.IsInfinity函数)、Double.MaxValue(变量)等;因此一个类型可以理解为一个内置类,即一组函数和变量的总称,可以用来在不同的类中定义另一个变量。我认为建议的示例非常具有描述性。

于 2013-08-19T07:48:28.883 回答
1

类不仅仅是函数和子类,它们还包含变量和属性。可以用来存储一堆值。

假设您想按人员编号将一个人的名字和姓氏存储在字典中。

Public Class Person
    Public Property Number As String
    Public Property FirstName As String
    Public Property LastName As String
End Class

Dim dict = New Dictionary(Of String, Person)
Dim p = New Person

p.Number = "A123"
p.FirstName = "John"
p.LastName = "Doe"

dict.Add(p.Number, p)

然后把人接回来

p = dict("A123")

Console.WriteLine(p.FirstName)
Console.WriteLine(p.LastName)
于 2013-08-19T13:36:01.297 回答
0

在结合了来自这个和其他来源的知识之后,这是我的最终解决方案:

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dictionary = New Dictionary(Of String, Pair)
        Dim p As New Pair("A", "B")

        MsgBox(p.First)
        MsgBox(p.Second)
    End Sub
End Class

Public Class Pair
    Private ReadOnly value1 As String
    Private ReadOnly value2 As String

    Sub New(first As String, second As String)
        value1 = first
        value2 = second
    End Sub

    Public ReadOnly Property First() As String
        Get
            Return value1
        End Get
    End Property

    Public ReadOnly Property Second() As String
        Get
            Return value2
        End Get
    End Property
End Class
于 2013-08-19T20:24:27.857 回答