这是一个简单的问题,但它让我头疼。我有一个很长的if
条件,而不是在一行上写,我想在多行上写清楚。
我做了一些研究并设法找到使用& _
,我可以在下一行写下表达式。但是,如果我写的话:
If Not (DataGridView1.Rows(counter).Cells("User").Value Is Nothing) And & _
(DataGridView1.Rows(counter).Cells("id number").Value Is Nothing) And & _
(DataGridView1.Rows(counter).Cells("Emailaddress").Value Is Nothing) And & _
(DataGridView1.Rows(counter).Cells("Date").Value Is Nothing) And & _
(DataGridView1.Rows(counter).Cells("phone no.").Value Is Nothing) Then
....... 'do something here'
End If
问题在于And & _
系统需要表达式。我尝试将& _
移到其他位置,例如:IS Nothing
之前,但没有运气。
任何人都可以帮助我
答案 0 :(得分:3)
And &
部分肯定是错误的,与换行符无关。你可以将整个混乱放在一行(删除所有的换行符),但它仍然无法编译。
VB.NET分别使用And
和AndAlso
作为其按位和逻辑AND运算符的名称。 And
具有按位语义,如C#中的&
。 AndAlso
具有逻辑和短路语义,如C#中的&&
。你不应该(实际上,不能)同时使用And
和&
。你应该在这里使用AndAlso
,因为你需要逻辑短路语义。
一行末尾的_
字符用作行继续符。这就是你在网上看到的,this is correct。您可以使用它将表达式分成多行。
If Not (DataGridView1.Rows(counter).Cells("User").Value Is Nothing) AndAlso _
(DataGridView1.Rows(counter).Cells("id number").Value Is Nothing) AndAlso _
(DataGridView1.Rows(counter).Cells("Emailaddress").Value Is Nothing) AndAlso _
(DataGridView1.Rows(counter).Cells("Date").Value Is Nothing) AndAlso _
(DataGridView1.Rows(counter).Cells("phone no.").Value Is Nothing) Then
....... 'do something here'
End If
但是,您可能根本不需要这样做。如果您使用的是相对较新版本的VB.NET implicit line continuation has been added to the language。任何运算符(如And
)都将作为隐式行继续运算符。所以你可以这样做:
If Not (DataGridView1.Rows(counter).Cells("User").Value Is Nothing) AndAlso
(DataGridView1.Rows(counter).Cells("id number").Value Is Nothing) AndAlso
(DataGridView1.Rows(counter).Cells("Emailaddress").Value Is Nothing) AndAlso
(DataGridView1.Rows(counter).Cells("Date").Value Is Nothing) AndAlso
(DataGridView1.Rows(counter).Cells("phone no.").Value Is Nothing) Then
....... 'do something here'
End If
就个人而言,为了便于阅读,我会强制排列。但我认为VB.NET IDE会对你发起攻击,所以它可能不值得。