VB.NET中多行的单个语句,没有下划线字符

Sha*_*awn 37 vb.net

有没有办法在没有下划线字符的情况下跨越多行?

在诸如SQL语句之类的多行字符串中,尤其是LINQ查询,这真的很烦人.

除了更改线条时的丑陋和困难(不再排队),您不能在多行语句的中间使用注释.

我日常的个人地狱的例子.

dim results = from a in articles _
              where a.articleID = 4 _ ' articleID     - Nope, can't do this
              select a.articleName


dim createArticle as string = _
    "Create table article " & _
    "    (articleID int " & _
    "    ,articleName varchar(50) " & _
    "    )"
Run Code Online (Sandbox Code Playgroud)

Boo*_*Boy 41

不,你必须使用下划线,但我相信VB.NET 10将允许多行没有下划线,只要它不能弄清楚结尾应该在哪里.

  • 这是主持人几周前在明尼阿波利斯举行的MSDN开发者大会上所说的话. (4认同)

小智 5

对于大多数使用带有内部CDATA块的XML元素的多行字符串,更容易避免为简单的原始字符串数据转义任何内容.

Dim s as string = <s><![CDATA[Line 1
line 2
line 3]]></s>.Value
Run Code Online (Sandbox Code Playgroud)

请注意,我已经看到很多人声明相同的格式,但没有包装"<s>"标签(只是CDATA块)但是视觉工作室自动格式化接缝以改变每行的前导空白.我认为这是由于Linq"X"对象背后的对象继承结构.CDATA不是"容器",外部块是继承自XContainer的XElement.


IIn*_*ble 5

从VB.NET 10开始,许多语法元素均支持隐式行连续(请参见Visual Basic中的语句:在多行上继续执行语句)。串联运算符(&)在语法元素列表中,它们支持隐式的行连续。还支持穿插注释,因此您的第二个示例可以重写为:

dim createArticle as string = 
    "Create table article " &
    "    (articleID int " &           ' Comment for articleID
    "    ,articleName varchar(50) " & ' Comment for articleName
    "    )"
Run Code Online (Sandbox Code Playgroud)

隐式行连续也适用于查询运算符,但有一些限制:

查询运算符之前和之后(聚合不同分组依据分组联接联接排序依据选择跳过略过一遍取当何处升序降序) 。您不能在由多个关键字组成的查询运算符的关键字之间折行(Order By群组加入暂停跳过)。

同样,允许穿插注释,因此您的第一个示例可以重写为:

dim results = from a in articles
              where a.articleID = 4  ' articleID - now perfectly legal
              select a.articleName
Run Code Online (Sandbox Code Playgroud)