关于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    '是否父类目

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

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