Estoy en el proceso de migrar un proyecto de Visual Basic a C # y tuve que cambiar la forma en for
que se declara un bucle.
En VB.NET, el for
bucle se declara a continuación:
Dim stringValue As String = "42"
For i As Integer = 1 To 10 - stringValue.Length
stringValue = stringValue & " " & CStr(i)
Console.WriteLine(stringValue)
Next
Qué salidas:
42 1
42 1 2
42 1 2 3
42 1 2 3 4
42 1 2 3 4 5
42 1 2 3 4 5 6
42 1 2 3 4 5 6 7
42 1 2 3 4 5 6 7 8
En C #, el for
bucle se declara a continuación:
string stringValue = "42";
for (int i = 1; i <= 10 - stringValue.Length; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
Y la salida:
42 1
42 1 2
42 1 2 3
Obviamente, esto no es correcto, así que tuve que cambiar el código ligeramente e incluí una variable entera que mantendría la longitud de la cadena.
Consulte el código a continuación:
string stringValue = "42";
int stringValueLength = stringValue.Length;
for (int i = 1; i <= 10 - stringValueLength; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
Y la salida:
42 1
42 1 2
42 1 2 3
42 1 2 3 4
42 1 2 3 4 5
42 1 2 3 4 5 6
42 1 2 3 4 5 6 7
42 1 2 3 4 5 6 7 8
Ahora mi pregunta se resuelve en torno a cómo Visual Basic difiere de C # en términos de Visual Basic usando la stringValue.Length
condición en el for
bucle, aunque cada vez que ocurre el bucle cambia la longitud de la cadena. Mientras que en C # si uso la condición stringValue.Length
en el for
bucle, cambia el valor de la cadena inicial cada vez que ocurre el bucle. ¿Por qué es esto?