Ich bin gerade dabei, ein Projekt von Visual Basic nach C # zu migrieren, und ich musste ändern, wie eine verwendete for
Schleife deklariert wird.
In VB.NET wird die for
Schleife unten deklariert:
Dim stringValue As String = "42"
For i As Integer = 1 To 10 - stringValue.Length
stringValue = stringValue & " " & CStr(i)
Console.WriteLine(stringValue)
Next
Welche Ausgänge:
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 # wird die for
Schleife unten deklariert:
string stringValue = "42";
for (int i = 1; i <= 10 - stringValue.Length; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
Und die Ausgabe:
42 1
42 1 2
42 1 2 3
Dies ist offensichtlich nicht korrekt, daher musste ich den Code geringfügig ändern und eine Ganzzahlvariable einfügen, die die Länge der Zeichenfolge enthält.
Bitte beachten Sie den Code unten:
string stringValue = "42";
int stringValueLength = stringValue.Length;
for (int i = 1; i <= 10 - stringValueLength; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
Und die Ausgabe:
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
Jetzt geht es um die Frage, wie sich Visual Basic in Bezug auf Visual Basic unter Verwendung der stringValue.Length
Bedingung in der for
Schleife von C # unterscheidet, obwohl sich die Länge der Zeichenfolge bei jedem Auftreten der Schleife ändert. Wenn ich in C # stringValue.Length
die for
Bedingung in der Schleife verwende, ändert sich der anfängliche Zeichenfolgenwert jedes Mal, wenn die Schleife auftritt. Warum ist das?