Pengtyf168
2017-03-31 04:07
采纳率: 100%
浏览 1.6k

关于List(of T)中添加T对象的问题

Dim shopitemCats As New List(Of itemCat)()
Dim catsDataset As DataSet = Nothing
Dim MyItemCat As New itemCat
catsDataset = links.GetDataset("select name from ad_shopCats where is_parent=0", "cats")
With catsDataset.Tables("cats")
     For i As Integer = 0 To .Rows.Count - 1
            MyItemCat.name = .Rows(i).Item("name").ToString
            shopitemCats.Add(MyItemCat)
      Next
End With
 For Each cat In shopitemCats
       MsgBox(cat.name)
Next

上面这样,只能得到多个重复的最后一个cat.name的值;

             Dim shopitemCats As New List(Of itemCat)()
    Dim catsDataset As DataSet = Nothing
    catsDataset = links.GetDataset("select name from ad_shopCats where is_parent=0", "cats")
    With catsDataset.Tables("cats")
        For i As Integer = 0 To .Rows.Count - 1
            Dim MyItemCat As New itemCat
            MyItemCat.name = .Rows(i).Item("name").ToString
            shopitemCats.Add(MyItemCat)
        Next
    End With
    For Each cat In shopitemCats
        MsgBox(cat.name)
    Next
            这样是正确的,但在循环内一直new itemCat不太合适吧?如何往一个集合对象中添加对象?vb.net代码,C#的朋友帮忙凑各着看看。
            对象定义为:

<DataContract()> _
Public Class itemCat
<DataMember()> _
Public name As String          '类目名称
<DataMember()> _
Public is_parent As Boolean    '是否父类目
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • oushede 2017-03-31 06:35
    已采纳

    你下方的代码就是正确的。在循环里new并没有什么不合适的地方啊。
    你上方的代码实际上是多次将同一对象往集合里面添加,结果肯定是一样的。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 笨蛋的小骗子 2017-03-31 06:34

    每次往容器中放入对象的时候都是把值的地址放进去,如果不NEW的话,一直放的是一个地址,而那个地址里的值就是最后一次赋的值

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题