【问题标题】:List.add overwrites previus items in list VB.NETList.add 覆盖列表 VB.NET 中的先前项目
【发布时间】:2012-11-02 18:19:47
【问题描述】:

您好,我编写的自定义对象列表有一点问题。当我使用 list.add(xxx) 方法时,它不会简单地将 xxx 对象附加到我的列表中,而是将每个项目都转换为 xxx,我不知道如何修复它。 这是我的自定义类的声明:

Public Class User

Private Shared n As String
Public Shared Property Name() As String
    Get
        Return n
    End Get
    Set(ByVal value As String)
        n = value
    End Set
End Property
Sub New(ByVal name As String)
    User.Name = name
End Sub


End Class

这里是我调用 list.add 方法的地方

Public Class Form1
    Private Sub subname
        Dim temp As New User
        Dim data As New List(Of User)
        For Each item As String In ListBox1.Items
            data.Add(New User(item))
        Next
    End Sub
End Sub

附:是的,我已经阅读了一些关于人们遇到同样问题但不了解如何将他们的解决方案应用于我的项目的帖子。

【问题讨论】:

    标签: vb.net list


    【解决方案1】:

    您的问题是 Shared 属性和私有成员。 Shared 成员在类的所有实例之间共享。如果您在一个实例中设置它,所有实例都将相同。

    Private Shared n As String
    Public Shared Property Name() As String
      ...
    End Property
    

    删除关键字Shared,它应该可以按预期工作。

    Private n As String
    Public Property Name() As String
      ...
    End Property
    

    【讨论】:

    • 好的,谢谢!我通过将Sub New 中的User.Name = name 方法转换为n = name 解决了我的愚蠢问题
    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2015-04-21
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多