我正在将项目从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
现在,我的问题解决stringValue.Length
了,for
即使每次循环发生时,字符串的长度都会改变,Visual Basic在循环条件下使用Visual Basic在Visual Basic方面与C#有何不同。在C#中,如果我stringValue.Length
在for
循环条件中使用,则每次循环发生时都会更改初始字符串值。为什么是这样?