爲什麼必須將行延續字符(_)作爲最後一行?有沒有技術原因,或者這是一個通常的微軟「功能」?爲什麼必須將VB.Net行延續字符作爲最後一行
在其他基本方言中,您可以在其後添加註釋,但不能在VB.net中添加註釋,所以我很好奇爲什麼微軟決定不允許在這些行上發表評論。
爲什麼必須將行延續字符(_)作爲最後一行?有沒有技術原因,或者這是一個通常的微軟「功能」?爲什麼必須將VB.Net行延續字符作爲最後一行
在其他基本方言中,您可以在其後添加註釋,但不能在VB.net中添加註釋,所以我很好奇爲什麼微軟決定不允許在這些行上發表評論。
它必須烘焙到編譯器中,因爲反彙編的代碼看起來沒有什麼不同。看看下面的代碼:
Dim nameVar As String = "John"
MsgBox("Hello " & nameVar & _
". How are you?")
MSIL在它看起來是這樣的:
IL_0000:NOP
IL_0001:ldstr 「約翰」
IL_0006:stloc.1
IL_0007:ldstr「你好「
IL_000c:ldloc.1
IL_000d:ldstr」。你好嗎?「
IL_0012:呼叫串[mscorlib程序] System.String ::的毗連(字符串,
串,
字符串)
現在沒有續行相同的代碼:
Dim nameVar As String = "John"
MsgBox("Hello " & nameVar & ". How are you?")
MSIL是相同的:
IL_0000:nop
IL_0001:ldstr「John」
IL_0006:stloc.1
IL_0007:ldstr「你好」
IL_000c:ldloc.1
IL_000d:ldstr「。你怎麼樣\「
IL_0012:電話串[mscorlib程序] System.String :: CONCAT(字符串,
串,
字符串)
所以這是一個 「?編譯器的功能,」 爲什麼這樣做這種方式在解釋關於VB.NET的任何東西時,你需要回顧一下經典的Visual Basic,許多原則和過程都只是簡單地向VB.NET提供了一個舒適的級別,並吸引了VB6和更早的程序員。爲什麼它在VB.NET中(2008年和之前)的方式可能是因爲它在VB6和更早的版本中是這樣的,並且我敢於猜測它是在VB6中以這種方式完成的,因爲在編譯代碼之前有IDE限制,但我們永遠不會知道,除非來自最初的VB6微軟團隊的人加入他們的推理。
希望這有助於!
感謝您的徹底解答! – Eugene 2010-09-20 19:44:49
在Microsoft VB.Net上工作的開發人員之一有關於此想法的blog post。他說這是一個好主意,但需要重構一些編譯器。
如果您認爲應該優先處理,您可以在博客上發表評論。或者在Microsoft Connect建議一些東西。
使用vs 2010,不再需要續行。否則是的,它的一個可愛的功能。 – BlackICE 2010-09-20 02:25:14
我知道它在2010年不是必需的,但這並不能真正回答我爲什麼微軟會這樣做的問題。 – Eugene 2010-09-20 02:38:22
@David:即使在VS 2010中,您也無法在續行的末尾添加註釋。 – Heinzi 2010-09-20 09:15:55