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 '是否父类目
你下方的代码就是正确的。在循环里new并没有什么不合适的地方啊。
你上方的代码实际上是多次将同一对象往集合里面添加,结果肯定是一样的。
每次往容器中放入对象的时候都是把值的地址放进去,如果不NEW的话,一直放的是一个地址,而那个地址里的值就是最后一次赋的值