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

List.add覆盖列表VB.NET中的previus项,vb.net,list,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 Strin

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

是的,我已经读过一些关于有同样问题的人的帖子,但不知道如何将他们的解决方案应用到我的项目中。

你的问题是
共享的
财产和私人成员。
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