单行Readline()!在VB.NET中= null

时间:2012-09-14 05:29:09

标签: vb.net while-loop

  

可能重复:
  How do I read from a StreamReader with a while loop in Visual Basic?

在C#中,我会循环一个streamreader,如下所示。

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)

但它没有用。

3 个答案:

答案 0 :(得分:11)

在C#中,((line = reader.ReadLine()) != null)是表达式中的赋值。 VB不支持这一点。因此,您将不得不拆分

  • 作业line = reader.ReadLine()
  • 比较line != null(在VB中:line IsNot Nothing

有很多方法可以做到这一点。 Prasanna in a parallel answer提出了一个。这是我喜欢的,因为您不需要重复ReadLine来电:

Do
    Dim line As String = reader.ReadLine()
    If line Is Nothing Then Exit Do
    Console.WriteLine(line)
Loop

答案 1 :(得分:4)

试试这个:

    line = reader.ReadLine()
    Do Until line Is Nothing
     Console.WriteLine(line)
     line = reader.ReadLine()
    Loop

答案 2 :(得分: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