使用AndAlso的Visual Basic If语句中的下划线(_)

Cod*_*ong 0 vb.net

如果这是在某处记录的话我很抱歉,我无法以这种特定方式使用下划线找到答案(如果不是,AndAlso语句).

这是我不明白的

If Not variable Is Nothing _
    AndAlso Not Results.Tables.Count = 0 _
    AndAlso Not Results.Tables(0).Rows.Count = 0 Then
Run Code Online (Sandbox Code Playgroud)

如果我在此代码中删除了下划线,VB2017会自动Then在第一行代码的末尾放置一个,并且在使用它们的两行上我得到2个AndAlso的语法错误.有人可以解释为什么会这样吗?我在StackOverflow上读到编译器不关心下划线,我也读过MSDN的AndAlso文档,我有点困惑.

谢谢您的帮助.

Joe*_*orn 8

我在StackOverflow上读到编译器不关心下划线

那不是真的.隐式行继续是Visual Basic语言1的最新成员.它们涵盖了许多但并非所有场景,其中_曾经需要线路延续角色.

这是链接文档的完整列表:

  • 逗号后(,).
  • 在打开括号(()之后或在右括号())之前.
  • 在打开大括号({)之后或在大括号()之前}.
  • 在打开嵌入式表达式(<%=)之后或在%>XML文本中嵌入式表达式()关闭之前.
  • 连接运算符(&)之后.例如:
  • 赋值运算符后(=,&=,:=,+=,-=,*=,/=,\=,^=,<<=,>>=).
  • 后的二进制运算符(+,-,/,*,Mod,<>,<,>,<=,>=,^,>>,<<,And,2,,,,的表达式内).AndAlsoOrOrElseLikeXor
  • 经营者Is和之后IsNot.
  • 在成员限定符之后的字符(.)和成员名称之前.

这表明我们可以安全地在之后 AndAlso而不是之前添加行:

If Not variable Is Nothing AndAlso
   Not Results.Tables.Count = 0 AndAlso 
   Not Results.Tables(0).Rows.Count = 0 Then
Run Code Online (Sandbox Code Playgroud)

我还建议重写如下,因为VB.Net做了奇怪的事情Not,使用它作为按位而不是逻辑运算符3:

If variable IsNot Nothing AndAlso
   Results.Tables.Count > 0 AndAlso 
   Results.Tables(0).Rows.Count > 0 Then
Run Code Online (Sandbox Code Playgroud)

1.好了,2010年,但我还是发现很多VB开发者不知道谁做他们,或了解他们,但从来没有检查规则,要么避开他们或让编译器告诉他们何时添加一个.
2.强调我的.
另外,我发现没有否定就更容易阅读.