C#/Xamarin臭虫?布尔值
这很奇怪。我有一个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
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(
代替=
而不强制转换。