Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么即使第一个条件为false,IF语句也会遍历所有条件_C#_.net_If Statement_Jit - Fatal编程技术网

C# 为什么即使第一个条件为false,IF语句也会遍历所有条件

C# 为什么即使第一个条件为false,IF语句也会遍历所有条件,c#,.net,if-statement,jit,C#,.net,If Statement,Jit,在c#中,我有这样的IF条件 if(x != null && x.myprop != "value") { // } 当x为null时,为什么编译器在“&&”运算符之后继续,即使条件保证不满足 如果在x为null时执行x.myprop,我会出现null异常,我知道“?”可以解决问题,但我不明白为什么它会继续。 对不起,我的英语不好。你所解释的是不可能的。null指针异常可能发生在代码的另一部分。在C#中,依靠短路(这就是您所描述的)是非常好的 说明书上说: &&和| |运算符称

在c#中,我有这样的IF条件

if(x != null && x.myprop != "value")
{
//
}
当x为null时,为什么编译器在“&&”运算符之后继续,即使条件保证不满足

如果在x为null时执行x.myprop,我会出现null异常,我知道“?”可以解决问题,但我不明白为什么它会继续。
对不起,我的英语不好。

你所解释的是不可能的。
null指针
异常可能发生在代码的另一部分。在
C#
中,依靠短路(这就是您所描述的)是非常好的

说明书上说:

&&和| |运算符称为条件逻辑运算符。 它们也被称为“短路”逻辑运算符。。。这个 操作x和y与操作x和y相对应,只是y是 仅当x为真时计算。。。操作x&&y的计算结果为 (bool)x?y:错。换句话说,首先计算x,然后 转换为bool类型。然后,如果x为真,则计算y并 转换为bool类型,这将成为操作的结果。 否则,操作结果为假

所以你不可能看到这种行为

条件AND运算符(&&)对其bool执行逻辑AND 操作数,但仅在必要时计算其第二个操作数

但是,您确定没有错误地使用&operator()

无论第一个运算符是什么,二进制运算符&都会对这两个运算符求值 一的值,与条件AND运算符&&相反


不可能-条件AND运算符(&&)对其布尔操作数执行逻辑AND运算,但仅在必要时计算其第二个操作数。请注意,当x不为空时,x.myprop可能仍然为空。可能您没有使用
&
,而只是使用
&
myprop的类型是什么?此类型是否会使
过载=myprop
)为空,则执行code>运算符并引发?或者您使用了
&
而不是
&&
。您是在询问编译器还是运行时间?因为如果它是第一个,编译器不会(事实上也不能)计算条件。