在 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)
但它不起作用。
在 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)
但它不起作用。
在 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
试试这个 :
line = reader.ReadLine()
Do Until line Is Nothing
Console.WriteLine(line)
line = reader.ReadLine()
Loop
在 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