ubound c#
UBound Array vb6 Conversión a C# (4)
¿Por qué no usar la propiedad .length?
for (iCounter = 0; iCounter < frpdReport.Length; iCounter++)
o si no necesita el valor del contador, a para cada
foreach (REPORTDEF frpReportItem in frpdReport)
O si está buscando un artículo específico, use LINQ
REPORTDEF fGetReportFile_return = frpdReport.Where( fR => fR.iReportID == iReportID).Single();
Tengo el siguiente código en 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
Y me convertí a este código 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;
Cuando se depura, obtengo el siguiente error en la instrucción for: "El índice estaba fuera de los límites de la matriz". Y no puedo entender por qué dado que el índice de la matriz es 6.
¿Alguna ayuda, por favor?
Esta línea es incorrecta:
for (iCounter = 0; iCounter < Convert.ToInt32(frpdReport[6]); iCounter++)
Debería ser:
for (iCounter = 0; iCounter < 6; iCounter++)
frpdReport
se definió como una matriz de seis elementos; en C #, las matrices están basadas en cero, por lo que frpdReport[6]
generará un error, ya que solo hay elementos del 0 al 5.
Puede obtener la longitud de una matriz usando arrayName.Length
.
for (iCounter = 0; iCounter < frpdReport.Length; iCounter++)
{
if (frpdReport[iCounter].iReportID == iReportID)
{
fGetReportFile_return = frpdReport[iCounter].tReportFile;
}
}
return fGetReportFile_return;
O el simple constructo foreach
:
foreach (REPORTDEF frpdReportItem in frpdReport)
{
if (frpdReportItem.iReportID == iReportID)
{
fGetReportFile_return = frpdReportItem.tReportFile;
}
}
return fGetReportFile_return;
REPORTDEF[6]
define 6 elementos, de 0 a 5.
Convert.ToInt32(frpdReport[6])
no parece tener ningún sentido. Estás convirtiendo una estructura en un número.