在对象初始值设定项中初始化的字段或属性的名称必须带有'。'的属性。

时间:2013-11-04 10:43:08

标签: c# asp.net vb.net

我已将一些C#代码转换为VB.net

C#代码:

private static List<Hotels> LoadData()
{  
        List<Hotels> lst = new List<Hotels>();
        DataTable dt = new DataTable();  
        var bl = new BAL();  
        dt = bl.GetDataTable("tbl_Hotel");  
        foreach (DataRow dr in dt.Rows)  
        {  
            lst.Add(new Hotels { Id = Convert.ToInt32(dr["PId"]), HotelName =     Convert.ToString(dr["HotelName"]) });

        } 
        return lst;  
    }

代码转换为VB:

Private Shared Function LoadData() As List(Of Makes)
    Dim bl As New BAL
    Dim lst As New List(Of Makes)()

    Dim dt As New DataTable()

    dt = bl.GetDataTable2()

    For Each dr As DataRow In dt.Rows
    lst.Add(New Makes() With { _

       'Here an error occur on "Key" Word

        Key .Id = Convert.ToInt32(dr("ID")), _
        Key .MakeName = Convert.ToString(dr("CHASSIS_NO")), _
        Key .Model = Convert.ToString(dr("MODEL")), _
        Key .Color = Convert.ToString(dr("color")), _

    })
    Next

    Return lst

End Function

我面临的错误是

  

在对象初始值设定项中初始化的字段或属性的名称必须以“。”开头。

我主要使用Asp.net C#和几乎vb和C#可以理解,但有些点这样我不明白为什么我得到这个错误PLZ帮助因为我是vb.net的新手

1 个答案:

答案 0 :(得分:3)

您只能将Key与匿名类型一起使用 - 而不是对象初始值设定项。所以你的VB代码应该是:

lst.Add(New Makes() With { _
    .Id = Convert.ToInt32(dr("ID")), _
    .MakeName = Convert.ToString(dr("CHASSIS_NO")), _
    .Model = Convert.ToString(dr("MODEL")), _
    .Color = Convert.ToString(dr("color")), _
})

在匿名类型上,Key使该属性为只读,表示它属于Equals / GetHashCode实现的一部分。这些差异在命名类型中都不相关。