为什么VB.Net行继续符必须是最后一行

时间:2010-09-20 01:22:21

标签: vb.net line

为什么行继续符(_)必须是行中的最后一个?是否存在技术原因,或者这是微软常用的“功能”?

在其他基本方言中你可以在它之后添加注释,但不能在VB.net中添加注释,所以我很好奇为什么微软决定不允许这些注释。

2 个答案:

答案 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提出建议。