Я занимаюсь переносом проекта с Visual Basic на C #, и мне пришлось изменить способ объявления используемого forцикла.
В VB.NET forцикл объявлен ниже:
Dim stringValue As String = "42"
For i As Integer = 1 To 10 - stringValue.Length
stringValue = stringValue & " " & CStr(i)
Console.WriteLine(stringValue)
Next
Какие выходы:
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
В C # forцикл объявлен ниже:
string stringValue = "42";
for (int i = 1; i <= 10 - stringValue.Length; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
И вывод:
42 1
42 1 2
42 1 2 3
Это, очевидно, неправильно, поэтому мне пришлось немного изменить код и включить целочисленную переменную, которая будет содержать длину строки.
Пожалуйста, посмотрите код ниже:
string stringValue = "42";
int stringValueLength = stringValue.Length;
for (int i = 1; i <= 10 - stringValueLength; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
И вывод:
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
Теперь мой вопрос решает вопрос о том, чем Visual Basic отличается от C # с точки зрения Visual Basic с использованием stringValue.Lengthусловия в forцикле, хотя каждый раз, когда цикл возникает, длина строки изменяется. В то время как в C # , если я использую stringValue.Lengthв forусловии цикла он меняет начальное значение каждый раз , когда строка , происходит цикл. Почему это?