I'm translating some code from VB to C#. The problem is with ArrayList
. In VB it runs fine but in C# it doesn't.
I have a Class named 'Numero'. In this 'Numero' there is an ArrayList
named 'ArraySorteosAparecidos'.
In this Array 'ArraySorteosAparecidos' there is another object named 'SorteosAparecidos'.
In the loop 'Calcular' I read each object 'Numero' in ArrayList
named 'ArrayNumeros'.
Then with the object 'Numero' I need to read one object of array 'ArraySorteosAparecidos' and read a field of this object 'SorteosAparecidos': 'sorteoaparecido1'.
In VB I can read objNumero.ArraySorteosAparecidos1(SorteosAparecidos - 1).sorteoaparecido1
but in C# I cannot.
My VB:
Public Class Numero
Private Numero As Long
Private ArraySorteosAparecidos As ArrayList
End Class
Sub Calcular(elNumero As Long, NumeroSorteo As Long)
Dim objNumero As Numero
Dim PendientesCalculadas As Long
Dim SorteosAparecidos As Long
Dim PendienteUltima As Decimal
Dim PendienteMedia As Decimal
For Each objNumero In ArrayNumeros
If elNumero = objNumero.Numero1 Then
Dim ElSorteoAparecido = New SorteoAparecido
Dim ElArrayDelNumero As New ArrayList()
ElSorteoAparecido.SorteoAparecido1 = NumeroSorteo
If Not objNumero.ArraySorteosAparecidos1 Is Nothing Then
ElArrayDelNumero = objNumero.ArraySorteosAparecidos1
End If
PendientesCalculadas = objNumero.ArraySorteosAparecidos1.Count - 2
If PendientesCalculadas >= 0 Then
SorteosAparecidos = objNumero.ArraySorteosAparecidos1.Count
PendienteUltima = (NumeroSorteo - objNumero.ArraySorteosAparecidos1(SorteosAparecidos - 1).sorteoaparecido1) / (objNumero.ArraySorteosAparecidos1(SorteosAparecidos - 1).sorteoaparecido1 - objNumero.ArraySorteosAparecidos1(SorteosAparecidos - 2).sorteoaparecido1)
ElSorteoAparecido.PendienteUltima1 = PendienteUltima
End If
ElArrayDelNumero.Add(ElSorteoAparecido)
objNumero.ArraySorteosAparecidos1 = ElArrayDelNumero
Exit For
End If
Next
End Sub
Now my C#
private void Calcular(long elnumero,long numerosorteo)
{
long pendientescalculadas;
int Sorteosaparecidos;
decimal pendienteultima=0;
decimal pendientemedia=0;
foreach (Numero objnumero in arraynumeros) {
if (elnumero == objnumero.Numeral1 ) {
SorteoAparecido Elsorteoaparecido = new SorteoAparecido();
ArrayList Elarraydelnumero = new ArrayList();
Elsorteoaparecido.SorteoApa1 = numerosorteo;
if ( objnumero.ArraySorteosAparecidos1 != null) {
Elarraydelnumero = objnumero.ArraySorteosAparecidos1;
}
pendientescalculadas = objnumero.ArraySorteosAparecidos1.Count - 2;
if (pendientescalculadas >= 0) {
Sorteosaparecidos = objnumero.ArraySorteosAparecidos1.Count;
Elarraydelnumero = objnumero.ArraySorteosAparecidos1;
pendienteultima = (numerosorteo - Elarraydelnumero[Sorteosaparecidos - 1].sorteoaparecido1 ) / (Elarraydelnumero[Sorteosaparecidos - 1].sorteoaparecido1 - Elarraydelnumero[Sorteosaparecidos - 2].sorteoaparecido1 );
Elsorteoaparecido.PendienteUltima1 = pendienteultima;
}
Elarraydelnumero.Add(Elsorteoaparecido);
objnumero.ArraySorteosAparecidos1 = Elarraydelnumero;
break;
}
}
}
The problem is in
Elarraydelnumero[Sorteosaparecidos - 1].sorteoaparecido1
In VB it's ok but in C# it doesn't run.
How I can do it?