List.add覆盖列表VB.NET中的普通项

时间:2012-11-02 01:50:49

标签: vb.net list

您好我写的自定义对象列表有点问题。当我使用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

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

1 个答案:

答案 0 :(得分:2)

您的问题是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