从VB转换的C#不起作用

mlg*_*g74 1 c#

我使用代码转换器从VB转到C#,我在c#中遇到错误.特别是,错误Item等等string.join(",", Flop.ToArray).错误说它不包含定义item但它在VB中有效.

VB

Dim Flop As New List(Of String)
    For x As Integer = 0 To Dataset9.Tables(0).Rows.Count - 1 'ROWS
        Flop.Add(Dataset9.Tables(0).Rows(x).Item("Id"))
    Next
    strAllRoleNames = String.Join(",", Flop.ToArray)
Run Code Online (Sandbox Code Playgroud)

C#

List<string> Flop = new List<string>();

    for (int x = 0; x <= Dataset9.Tables[0].Rows.Count - 1; x++)
      {
         Flop.Add(Dataset9.Tables[0].Rows[x].Item["Id"]);
      }
 strAllRoleNames = string.Join(",", Flop.ToArray);
Run Code Online (Sandbox Code Playgroud)

Mit*_*ers 7

试试这个:

List<string> Flop = new List<string>();

    for (int x = 0; x <= Dataset9.Tables[0].Rows.Count - 1; x++)
      {
         Flop.Add(Dataset9.Tables[0].Rows[x]["Id"].ToString());
      }
 strAllRoleNames = string.Join(",", Flop.ToArray());
Run Code Online (Sandbox Code Playgroud)

他们在这里失踪了三把钥匙

  1. 连续访问项目时,需要使用C#默认索引器,因为C#中不存在Item
  2. 由于连续的单元格是一个对象,并且您需要一个字符串,因此需要显式调用ToString
  3. 调用ToArray时,需要C#末尾的()

  • 这里的想法是Item属性是C#中此对象的默认索引器.与VB不同,C#不提供命名索引器,只提供默认索引器. (2认同)