2012-11-02 2 views
2

안녕하세요, 제가 작성한 사용자 지정 개체 목록에 약간의 문제가 있습니다. list.add (xxx) 메서드를 사용하면 단순히 xxx 객체를 내 목록에 추가하는 것이 아니라 각 항목을 xxx로 바꿔서 어떻게 수정해야하는지 모릅니다. 여기 는 내 사용자 정의 클래스의 선언입니다 :List.add는 VB.NET의 previus 항목을 덮어 씁니다.

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.입니다 예, 이미 동일한 문제가있는 사람들에 관한 게시물을 읽었지 만 솔루션을 프로젝트에 적용하는 방법을 이해하지 못했습니다.

답변

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 
+0

감사합니다. 나는'Sub New '에있는'User.Name = name' 메쏘드를'n = name'으로 바꿈으로써 어리석은 문제를 해결했습니다. –

관련 문제