我在VB6中有以下代码:

Dim frpdReport() As REPORTDEF

For iCounter = 0 To UBound(frpdReport)

    With frpdReport(iCounter)
        If .iReportID = iReportID Then
            fGetReportFile = .tReportFile
        End If
    End With
Next iCounter


然后我转换为以下C#代码:

REPORTDEF[] frpdReport = new REPORTDEF[6];
 for (iCounter = 0; iCounter < Convert.ToInt32(frpdReport[6]); iCounter++)
    {
        if (frpdReport[iCounter].iReportID == iReportID)
        {
            fGetReportFile_return = frpdReport[iCounter].tReportFile;
        }

    }
    return fGetReportFile_return;


调试时,我在for语句中收到以下错误-“索引超出了数组的范围。”而且我不知道为什么,因为数组的索引是6。

有什么帮助吗?

最佳答案

为什么不使用.length属性?

 for (iCounter = 0; iCounter < frpdReport.Length; iCounter++)


或者,如果您不需要计数器值,则为每个

foreach (REPORTDEF frpReportItem in frpdReport)


或者,如果您正在寻找特定项目,请使用LINQ

REPORTDEF fGetReportFile_return = frpdReport.Where( fR => fR.iReportID == iReportID).Single();

10-06 06:11