2012-09-14 45 views

回答

7

在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 
4

嘗試這種情況:

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

在VB中你只能做在一份聲明中的分配,實際上是一個命令:

Let line = reader.ReadLine() 

Let命令可以隱含,所以你不需要寫它。實際上,編輯器會自動將其更改爲隱形式:

line = reader.ReadLine() 

雖然Let命令是不可見的,它仍然存在潛伏。你不能在C#中使用賦值作爲表達式。如果嘗試,則將使用比較運算符=而不是賦值運算符=。它們是相同的,它們可以是一個只用於一個賦值,另一個只用於表達式。

您可以分配後檢查空和退出循環:

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