最佳答案
我正在将一个项目从 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
现在我的问题解决了 VisualBasic 与 C # 在使用 for
循环中的 stringValue.Length
条件方面的区别,尽管每次循环发生时字符串的长度都会发生变化。而在 C # 中,如果我在 for
循环条件中使用 stringValue.Length
,那么每次循环发生时它都会更改初始字符串值。为什么会这样?