Sto migrando un progetto da Visual Basic a C # e ho dovuto modificare il modo for
in cui viene dichiarato un ciclo utilizzato.
In VB.NET il for
ciclo è dichiarato di seguito:
Dim stringValue As String = "42"
For i As Integer = 1 To 10 - stringValue.Length
stringValue = stringValue & " " & CStr(i)
Console.WriteLine(stringValue)
Next
Quali uscite:
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
In C # il for
ciclo è dichiarato di seguito:
string stringValue = "42";
for (int i = 1; i <= 10 - stringValue.Length; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
E l'output:
42 1
42 1 2
42 1 2 3
Questo ovviamente non è corretto, quindi ho dovuto modificare leggermente il codice e ho incluso una variabile intera che avrebbe mantenuto la lunghezza della stringa.
Si prega di consultare il codice di seguito:
string stringValue = "42";
int stringValueLength = stringValue.Length;
for (int i = 1; i <= 10 - stringValueLength; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
E l'output:
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
Ora la mia domanda risolve il modo in cui Visual Basic differisce da C # in termini di Visual Basic utilizzando la stringValue.Length
condizione nel for
ciclo anche se ogni volta che si verifica il ciclo la lunghezza della stringa cambia. Mentre in C # se uso il stringValue.Length
nella for
condizione del ciclo cambia il valore stringa iniziale ogni volta che si verifica il ciclo. Perchè è questo?