列表函数的Add方法存在问题

Hea*_*ert 1 .net vb.net visual-studio-2008

我有一个名为user_class的数据结构(这是一个类),我想从数据库加载所有用户数据.

目前我有

        While SQLreader.Read()
         Hold_user.username = SQLreader(0)
         Hold_user.BlahBlahBlah = SQLreader(1)
         Hold_user.Secret_Password = SQLreader(2)
         return_value.Add(Hold_user)
        End While
Run Code Online (Sandbox Code Playgroud)

其中return_value是user_class的List,hold_user是同一个类的实例.

        Dim return_value As New List(Of user_class)
        Dim Hold_user As New user_class
Run Code Online (Sandbox Code Playgroud)

当while语句循环读取数据时,SQLreader(0),(1)和(2)用新数据更新,但是它们似乎也在更新return_value中保存的存储值....

纠缠是Visual Studio中的一个错误,还是我需要像ByVal这样的东西,在Add方法中(我知道它不是我需要的ByVal,因为我已经尝试过了:)但我希望你明白我的意思.)

San*_*ken 5

你应该为循环中的每次迭代创建一个新的user_class.现在,您将大量对同一对象的引用放入列表中,然后当您更改一个项目时,它们都会更改,因为它们都指向同一个实例