在VB.NET中,And和AndAlso有什么区别?

42 浏览
0 Comments

在VB.NET中,And和AndAlso有什么区别?

在VB.NET中,AndAndAlso有什么区别?我应该使用哪一个?

admin 更改状态以发布 2023年5月22日
0
0 Comments

And运算符将在继续之前检查语句中的所有条件,而Andalso运算符将在知道条件为false时停止。例如:

if x = 5 And y = 7

检查x是否等于5,检查y是否等于7,如果两者都为true,则继续。

if x = 5 AndAlso y = 7

检查x是否等于5。如果不是,它就不会检查y是否为7,因为它已经知道条件是false了。(这被称为短路。)

一般来说,如果有明确的原因不检查第二部分,如果第一部分不为真,例如如果检查会抛出异常,人们会使用短路方法。例如:

If Not Object Is Nothing AndAlso Object.Load()

如果使用And而不是AndAlso,即使它是nothing,它仍然会尝试Object.Load(),这将引发异常。

0
0 Comments

And运算符评估两端,而AndAlso仅在左侧为真时评估右侧。

例如:

If mystring IsNot Nothing And mystring.Contains("Foo") Then
  ' bla bla
End If

如果mystring = Nothing,上述代码会抛出异常。

If mystring IsNot Nothing AndAlso mystring.Contains("Foo") Then
  ' bla bla
End If

而下面的代码则不会抛出异常。

因此,如果您来自C#世界,应该像使用&&一样使用AndAlso

更多信息请参见:http://www.panopticoncentral.net/2003/08/18/the-ballad-of-andalso-and-orelse/

0