可能重复:
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)
但它没有用。
答案 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