vb.net字典对象,参数中构造结构实例,不需要临时变量

  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

最近更新

  1. TCP协议是安全的吗?

    2024-01-08 10:18:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-08 10:18:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-08 10:18:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-08 10:18:06       20 阅读

热门阅读

  1. 用php实现日历输出

    2024-01-08 10:18:06       29 阅读
  2. React本地开发时,组件为啥会渲染两次

    2024-01-08 10:18:06       30 阅读
  3. go 切片长度与容量的区别

    2024-01-08 10:18:06       31 阅读
  4. 【前端规范】

    2024-01-08 10:18:06       35 阅读
  5. docker运行状态

    2024-01-08 10:18:06       29 阅读
  6. C++基础拾遗--看的不多只看一篇

    2024-01-08 10:18:06       34 阅读
  7. 【C语言】R7-5 奇偶排序

    2024-01-08 10:18:06       35 阅读
  8. Windows安装SonarQube9.9

    2024-01-08 10:18:06       38 阅读
  9. 剑指offer面试题3 二维数组中的查找

    2024-01-08 10:18:06       32 阅读
  10. 383. 赎金信

    2024-01-08 10:18:06       43 阅读
  11. 信息学奥赛一本通1037:计算2的幂

    2024-01-08 10:18:06       37 阅读