dict.Add("Tom", New Person())
dict.Add("John", New Person With {.Age = 25})
dict.Add("Jane", New Person With {.Name = "Jane", .Age = 30})
字典里面的数据是结构,添加一个字典键,直接在参数中赋值而不用临时变量做个示例
当字典的值是结构类型时,可以直接在参数中赋值而不使用临时变量。以下是一个示例:@code
在上面的示例中,我们定义了一个名为Person的结构类型,它有两个成员变量Name和Age。然后,我们创建了一个字典对象dict,键的类型是String,值的类型是Person。
在添加字典键值对时,我们直接在参数中使用New Person来创建一个Person结构的实例,并通过对象初始化器为其成员变量赋值。这样就可以直接将结构实例作为值传递给字典的Add方法,而不需要使用临时变量。
最后,我们通过键来访问字典中的值,并使用Console.WriteLine将其输出到控制台。
结构中参数可以少填或不填
Module Module1
Structure Person
Public Name As String
Public Age As Integer
End Structure
Sub Main()
Dim dict As New Dictionary(Of String, Person)()
' 直接在参数中赋值
dict.Add("Tom", New Person())
dict.Add("John", New Person With {.Age = 25})
dict.Add("Jane", New Person With {.Name = "Jane", .Age = 30})
' 访问字典中的值
Console.WriteLine("Name: " & dict("John").Name & ", Age: " & dict("John").Age)
Console.WriteLine("Name: " & dict("Jane").Name & ", Age: " & dict("Jane").Age)
Console.ReadLine()
End Sub
End Module
提问:结构的数据无法直接修改,如果把一个公用类作字典的数据是否就可以修改了,公用类是不是比结构占用更多内存和CPU开销?
是的,结构的数据是值类型,无法直接修改其中的属性值,而是需要通过创建副本并修改副本的方式来实现。而公用类是引用类型,可以直接修改其中的属性值。
使用公用类作为字典的数据,可以直接修改其中的属性值,而不需要创建副本。以下是一个示例:
在示例中,我们创建了一个公用类Person,并将其作为字典的值类型。然后,我们直接修改字典中"John"键对应的公用类对象的Age属性值为30。这样就实现了直接修改字典中公用类对象的属性值。
关于内存和CPU开销的问题,公用类相对于结构来说,通常会占用更多的内存和CPU开销。这是因为公用类是引用类型,它的实例是在堆上分配的,并且需要额外的内存来存储引用。而结构是值类型,它的实例是在栈上分配的,不需要额外的内存来存储引用。
然而,具体的内存和CPU开销取决于实际的使用情况和数据量。在某些情况下,使用结构可能更加高效,特别是当结构的数据量较小且需要频繁传递或复制时。而在其他情况下,使用公用类可能更加灵活和方便,特别是当需要修改数据时。
因此,在选择使用结构还是公用类时,需要根据具体的需求和性能要求进行权衡和选择。
Class Person
? ? Public Name As String
? ? Public Age As Integer
? ? ' 其他属性...
End Class
Sub Main()
? ? Dim dict As New Dictionary(Of String, Person)()
? ? ' 添加公用类对象到字典
? ? dict.Add("John", New Person With {.Name = "John", .Age = 25})
? ? ' 直接修改属性值
? ? dict("John").Age = 30
? ? ' 输出修改后的属性值
? ? Console.WriteLine("Name: " & dict("John").Name)
? ? Console.WriteLine("Age: " & dict("John").Age)
? ? Console.ReadLine()
End Sub