Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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#/Xamarin臭虫?布尔值_C#_Xamarin - Fatal编程技术网

C#/Xamarin臭虫?布尔值

C#/Xamarin臭虫?布尔值,c#,xamarin,C#,Xamarin,这很奇怪。我有一个C#代码: 当我用Xamarin调试器检查它时,它告诉我value是false,但是((Literal)expr.left)。value==((Literal)expr.right)。value)是true。为什么呢?我很困惑…找到了((文字)expr.left)。value是一个对象,这意味着它将始终返回false,除非right和left是相同的bool,而它们不是 把它们都投给布尔会比较它们的价值 bool value = ((bool)((Literal)expr.le

这很奇怪。我有一个C#代码:

当我用Xamarin调试器检查它时,它告诉我
value
false
,但是
((Literal)expr.left)。value==((Literal)expr.right)。value)
true
。为什么呢?我很困惑…

找到了
((文字)expr.left)。value
是一个
对象
,这意味着它将始终返回false,除非right和left是相同的bool,而它们不是

把它们都投给布尔会比较它们的价值

bool value = ((bool)((Literal)expr.left).value == (bool)((Literal)expr.right).value);
找到了
((文字)expr.left)。value
是一个
对象
,这意味着它将始终返回false,除非right和left是相同的bool,而它们不是

把它们都投给布尔会比较它们的价值

bool value = ((bool)((Literal)expr.left).value == (bool)((Literal)expr.right).value);

您确定在执行这一行代码之后检查了它吗?您是在对该行求值并指定值之前还是之后检查它?C#和/或Xamarin不太可能有将
true
false
混淆的bug。类似的情况会被注意到。您确定在执行这行代码之后检查了它吗?您是在对该行求值并分配值之前还是之后检查它?C#和/或Xamarin不太可能有将
true
false
混淆的bug。你也可以使用
.Equals(
代替
=
而不强制转换。你也可以使用
.Equals(
代替
=
而不强制转换。