为什么行继续符(_)必须是行中的最后一个?是否存在技术原因,或者这是微软常用的“功能”?
在其他基本方言中你可以在它之后添加注释,但不能在VB.net中添加注释,所以我很好奇为什么微软决定不允许这些注释。
答案 0 :(得分:6)
它必须融入编译器,因为反汇编的代码看起来没有什么不同。看看下面的代码:
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(字符串,
串,
字符串)
现在相同的代码没有行继续:
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微软团队中的某些人在其背后添加了推理。
希望这有帮助!
答案 1 :(得分:4)
其中一位在Microsoft VB.Net上工作的开发人员对此有一个blog post的想法。他说这是个好主意,但需要一些编译器重构。
如果您认为应优先考虑,可以在博客上发表评论。或者在Microsoft Connect提出建议。