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:)

有很多方法可以做到这一点。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 回答