Я переходжу до проекту з 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
in for
loop, це змінює початкове значення рядка кожного разу, коли виникає цикл. Чому це?