mig*_*lla 2 c# logic conditional statements
如果在C#中有if语句,则检查多个条件:
if (a == 5 && b == 9) { ... }
Run Code Online (Sandbox Code Playgroud)
如果== 5条件为假,b == 9是否仍会被检查,或者它是否会自动退出,因为这样就不能再通过了?
同样,对于OR if语句:
if (a == 5 || b == 9) { ... }
Run Code Online (Sandbox Code Playgroud)
将b == 9仍然得到遏制,如果一个== 5是真的吗?
ang*_*son 18
这两个&&和||是"短路"的运营商,这意味着如果答案是从左边的操作数已知,右操作数未评估.
这意味着:
a && b
Run Code Online (Sandbox Code Playgroud)
b如果a是假的,将不会被评估,因为最终答案已经知道.
同样:
a || b
Run Code Online (Sandbox Code Playgroud)
b如果a是真的,将不会被评估,因为最终答案已经知道.
如果要评估两个操作数,请使用&和|运算符.
这样做的好处是,如果评估了所有操作数,您可以编写失败的表达式.这是一个典型的if语句:
if (a != null && a.SomeProperty != null && a.SomeProperty.Inner != null)
... use a.SomeProperty.Inner
Run Code Online (Sandbox Code Playgroud)
如果a为null,并且表达式将继续进行求值a.SomeProperty,则会抛出一个NullReferenceException,但是由于&&短路,如果a是null,表达式将不会评估其余的,因此不会抛出异常.
显然,如果替换&&为&,则会抛出该异常,如果是a或者a.SomeProperty是null.
| 归档时间: |
|
| 查看次数: |
35287 次 |
| 最近记录: |