1

重複の可能性:
Visual Basic で while ループを使用して StreamReader から読み取るにはどうすればよいですか?

C# では、以下に示すようにストリームリーダーをループします。

while ((line = reader.ReadLine()) != null)
{
    list.Add(line); // Add to list.
    Console.WriteLine(line); // Write to console.
}

VB.NET で同等のものは何ですか?

私は試した

while ((line = reader.ReadLine()) IsNot Nothing)

しかし、それは機能していません。

4

3 に答える 3

11

C# では、式内((line = reader.ReadLine()) != null)代入です。VB はそれをサポートしていません。したがって、分割する必要があります

  • 課題line = reader.ReadLine()
  • 比較line != null(VB: line IsNot Nothing)

それを行うには多くの方法があります。1 つは Prasannaが並行回答で提示したものです。ReadLine呼び出しを繰り返す必要がないため、これは私が好むものです。

Do
    Dim line As String = reader.ReadLine()
    If line Is Nothing Then Exit Do
    Console.WriteLine(line)
Loop
于 2012-09-14T05:41:28.320 に答える
4

これを試して :

    line = reader.ReadLine()
    Do Until line Is Nothing
     Console.WriteLine(line)
     line = reader.ReadLine()
    Loop
于 2012-09-14T05:37:22.093 に答える
2

VB では、ステートメントでのみ割り当てを行うことができます。実際には、そのためのコマンドがあります。

Let line = reader.ReadLine()

コマンドはLet暗黙的に指定できるため、記述する必要はありません。実際には、エディターは自動的に暗黙的な形式に変更します。

line = reader.ReadLine()

コマンドは表示されませんが、Letまだ潜んでいます。C# のように代入を式として使用することはできません。試してみると=、代入演算子の代わりに比較演算子を使用することになります=。それらは同じであり、一方は割り当てでのみ使用され、もう一方は式でのみ使用されます。

割り当て後に null をチェックして、ループを終了できます。

Do
  line = reader.ReadLine()
  If line Is Nothing Then Exit Do
  Console.WriteLine(line)
Loop
于 2012-09-14T05:46:12.857 に答える