-2

我正在尝试将一段代码转换为 C#,但我无法理解它:

For iItem = LBound(arrItems) To UBound(arrItems)
    If InStr(arrItems(iItem), strFieldName & "=") = 1 Then
        strFindField = Mid(arrItems(iItem), Len(strFieldName) + 2)
        Exit For
    End If
Next

声明怎么了if

4

2 回答 2

1

该工具似乎无法生成非常惯用的 C#,因此我将手动为您翻译以提供对比。

foreach (var item in arrItems)
{
   if(item.IndexOf(strFieldName + "=") == 0)
   {
      strFindField = item.Substring(strFieldName.Length + 2);
      break;
   }
}

这应该模仿您在这里所做的事情,但是很难说出循环的意图是什么。另外,请注意,.Substring如果您向其提供超出其范围的数字,则会引发异常,而Mid只会返回一个空字符串。但是,由于尚不清楚如何使用此循环的返回,因此很难说处理此语义更改的最合适的选项是什么。

于 2012-11-05T18:14:19.137 回答
0
for (iItem = Information.LBound(arrItems); iItem <= Information.UBound(arrItems); iItem++) {
    if (Strings.InStr(arrItems(iItem), strFieldName + "=") == 1) {
        strFindField = Strings.Mid(arrItems(iItem), Strings.Len(strFieldName) + 2);
        break; // TODO: might not be correct. Was : Exit For
    }
}

http://www.developerfusion.com/tools/convert/vb-to-csharp/

于 2012-11-05T17:57:32.200 回答