Estou no processo de migração de um projeto do Visual Basic para C # e tive que alterar a forma como um for
loop em uso é declarado.
Em VB.NET, o for
loop é declarado abaixo:
Dim stringValue As String = "42"
For i As Integer = 1 To 10 - stringValue.Length
stringValue = stringValue & " " & CStr(i)
Console.WriteLine(stringValue)
Next
Quais saídas:
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
Em C #, o for
loop é declarado abaixo:
string stringValue = "42";
for (int i = 1; i <= 10 - stringValue.Length; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
E a saída:
42 1
42 1 2
42 1 2 3
Isso obviamente não está correto, então eu tive que mudar o código levemente e incluí uma variável inteira que manteria o comprimento da string.
Por favor veja o código abaixo:
string stringValue = "42";
int stringValueLength = stringValue.Length;
for (int i = 1; i <= 10 - stringValueLength; i ++)
{
stringValue = stringValue + " " + i.ToString();
Console.WriteLine(stringValue);
}
E a saída:
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
Agora minha pergunta resolve em torno de como o Visual Basic difere do C # em termos de Visual Basic usando a stringValue.Length
condição no for
loop, embora cada vez que o loop ocorra, o comprimento da string seja alterado. Enquanto em C #, se eu usar a condição stringValue.Length
in the for
loop, ele altera o valor inicial da string cada vez que ocorre o loop. Por que é isso?