2013-10-10 3 views
-1

Я использую пару пользовательских классов и должен записывать данные в одну функцию и читать данные в другом. Для этого я использую файл XM.VB.NET Класс и список (выпуск

Мой вопрос, когда я пишу данные

Вот мой код:. Импорт System.IO Импорт система

Public Class MainForm 

    Public Class MyClass 
    Private _id As Integer 
    Private _somestring As String 
    Public Property Id() As Integer 
     Get 
      Return _id 
     End Get 
     Set(ByVal Value As Integer) 
      _id = Value 
     End Set 
    End Property 
    Public Property Somestring() As String 
     Get 
      Return _somestring 
     End Get 
     Set(ByVal Value As String) 
      _somestring = Value 
     End Set 
    End Property 
End Class 

Private Sub mysub() 
    Dim ListVar As New List(Of MyClass) 

    ' code...code.....code.... 

    Dim newvar As New MyClass() 
    console.writeline("==== within the loop ====") 
    For i As Integer = 0 To 2 
    newvar.Id = I 
    newvar.Somestring = "hello - " & cstr(I) 
    ListVar.add(newvar) 
    console.writeline("listvar(" & i & ")=" & listvar(i).Id) 
    Next 
    console.writeline("==== outside the loop ====") 
    console.writeline("listvar(0)=" & listvar(0).Id) 
    console.writeline("listvar(1)=" & listvar(1).Id) 
    console.writeline("listvar(2)=" & listvar(2).Id) 
    End Sub 
End Class 

Выход:

==== ==== внутри петли

listvar (0) = 0

listvar (1) = 1

listvar (2) = 2

==== вне контура ====

listvar (0) = 2

listvar (1) = 2

список вар (2) = 2

я должен делать что-то глупое, но я просто понять, что это такое ....

ответ

1

ли это:

console.writeline("==== within the loop ====") 
    For i As Integer = 0 To 2 
    Dim newvar As New MyClass() 
    newvar.Id = I 
    newvar.Somestring = "hello - " & cstr(I) 
    ListVar.add(newvar) 
    console.writeline("listvar(" & i & ")=" & listvar(i).Id) 
    Next 

newvar продолжает быть тот же экземпляр, поэтому все три ссылки в списке указывают на один и тот же экземпляр, а его значение Id - это то, что вы задали последним в своем цикле For.

+0

Я знал, что это просто! Теперь, когда вы указываете на это, это имеет смысл. Спасибо. – Nick

Смежные вопросы