如何创建自己的类型并使用它来存储数据

时间:2013-08-19 07:34:35

标签: vb.net class types dictionary

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

3 个答案:

答案 0 :(得分:5)

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中添加任何内容(列表,自定义类型等)。

注意2:VB.NET中的原始类型(例如:Double)基本上是一堆变量(在给定框架内全局声明)和函数:Double.IsInfinity(函数),{{ 1}}(变量)等;因此,类型可以理解为内置类,即一组函数和变量的通用名称,可用于在另一个类中定义另一个变量。我认为提出的例子非常具有描述性。

答案 1 :(得分: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)

答案 2 :(得分: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