プロジェクトをVisualBasicから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がC#とどのように異なるかについての質問が解決されました。一方、C#では、stringValue.Length
in the for
loop条件を使用すると、ループが発生するたびに初期文字列値が変更されます。どうしてこれなの?