9

我正在重写/转换一些 VB 代码:

Dim dt As New System.Data.DataTable()
Dim dr As System.Data.DataRow = dt.NewRow()
Dim item = dr.Item("myItem")

C#:

System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr = dt.NewRow();
var item = dr.Item["myItem"];

我不能让它在 C# 下运行,我遇到的问题是第三行var item = dr.Item["myItem"];

System.Data.DataRow' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.Data.DataRow' could be found (are you missing a using directive or an assembly reference?)

System.Data我在两个项目中都引用了第 4 版。我在这里想念什么?注意:ItemArray 存在于...

4

2 回答 2

21

试试这样:

var item = dr["myItem"];

在 C# 中,您可以直接访问indexer 属性。并且DataRow.Item属性被定义为索引器。

于 2011-10-24T10:05:12.053 回答
3

C# 中实际上没有“Item”属性。在 VB 中,DataRow 单元格访问定义如下:

Default Public Property Item (
    column As DataColumn
) As Object

所以有一个字面的“项目”属性。但是,在 C# 中,它是这样定义的:

public object this[
    DataColumn column
] { get; set; }

所以这是类/对象的默认属性。因此,您可以使用对象名称访问它。

于 2017-10-24T22:36:33.920 回答