我看到下面的代码,震惊了所有人。
这段代码是如何执行的?
if (!Test.IsXyz == true)
{ }
如果IsXyz解析为true,但随后变为false!运算符,这段代码是如何解释的?因为RHS声明是真的。这会是:
1)LHS为假对于RHS是真的==假(从我的真相表日)
假设bool解析为true,我可以想象这个代码可以理解的几种奇怪方式。编译器的官方方式是什么?
答案 0 :(得分:2)
根据C#运算符优先级,应将其评估为
((!Test.IsXyz)== true)
因此为假(LHS)和True(RHS)。
答案 1 :(得分:1)
评估为假。
换句话说,代码:
var Test = new { IsXyz = true };
if (!Test.IsXyz == true)
{
Console.WriteLine("TRUE");
}
不会在屏幕上打印任何内容。
答案 2 :(得分:1)
该陈述更详细,但同样有效,等同于
if (!Test.IsXyz)
{
}
因此,如果结果为false,则条件的结果为真 如果结果为true,则条件的结果为false。
答案 3 :(得分:0)
订单剂量在这里并不重要
因为你有以太!(L == R)或(!L)== R,但这等于可以看到的相同的东西
L = T : !( T == T) -> !( T ) -> F or (!T) == T -> F == T -> F
和
L = F : !( F == T) -> !( F ) -> T or (!F) == T -> T == T -> T