我在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();