【问题标题】:Problems with the Add method of the list function列表函数的Add方法的问题
【发布时间】:2010-01-02 17:36:08
【问题描述】:

我有一个名为 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

其中 return_value 是 user_class 的 List,而 hold_user 是同一类的实例。

        Dim return_value As New List(Of user_class)
        Dim Hold_user As New user_class

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

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

【问题讨论】:

    标签: .net vb.net visual-studio-2008


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我会修改您的代码以在您的 while 循环内实例化一个新的 user_class:

      While SQLreader.Read()
          Dim Hold_user As New user_class
          Hold_user.username = SQLreader(0)
          Hold_user.BlahBlahBlah = SQLreader(1)
          Hold_user.Secret_Password = SQLreader(2)
          return_value.Add(Hold_user)
      End While
      

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-09
        • 1970-01-01
        相关资源
        最近更新 更多