我最近遇到了字典只允许每个键 1 个值的问题。阅读周围,我看到了多个建议通过类创建类型的答案。现在授予我对类的了解不多,我一直认为类只是函数和子类的集合。他们为什么可以创建数据类型,您如何使用它们来创建数据类型?
问问题
14311 次
3 回答
5
a 的基本定义由Dictionary
给出Dictionary(Of type1, type2)
,其中类型可以是任何东西,即原始类型(String
、Double
等)或您创建的类型(Class
例如,通过 )。您也可以将它们视为“单个变量”或内部集合(Lists
、Arrays
等)。一些例子:
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
注意:您可以随意更改上述示例中的类型;还将任何内容(列表、自定义类型等)都放在Values
和Keys
中。
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 回答