我在使这段代码更简洁(最好是一个布尔表达式)时有点大脑放屁。
这是我的代码:
if (d.Unemployed)
{
if (type.Unemployed)
{
tmp.Unemployed = true;
}
else
{
tmp.Unemployed = false;
}
}
else
{
if (type.Unemployed)
{
tmp.Unemployed = false;
}
else
{
tmp.Unemployed = true;
}
}
基本上重点是,如果type
或d
没有失业,那么tmp
应设置为不失业。
答案 0 :(得分:13)
怎么样:
tmp.Unemployed = type.Unemployed == d.Unemployed;
答案 1 :(得分:4)
如果我们按照代码构造一个真值表,我们得到
d | type | tmp
---+------+----
1 | 1 | 1
---+------+----
1 | 0 | 0
----+-----+----
0 | 1 | 0
----+-----+----
0 | 0 | 1
以上等同于xor
操作的否定。
tmp = not (d xor type)
如果语言没有xor
运算符,我们可以在布尔值上使用!=
。
tmp = ! (d != type);
// or
tmp = d == type;
答案 2 :(得分:2)
考虑到这会导致你“脑屁”多少,我会考虑使用一个名字很好的变量,以避免将来再次经历这个心理过程。像这样:
isTmpUnemployed = (type.Unemployed == d.Unemployed);
tmp.Unemployed = isTmpUnemployed;
答案 3 :(得分:0)
tmp.Unemployed = d.Unemployed || type.Unemployed ? !tmp.Unemployed : null;
答案 4 :(得分:0)
上述代码的意思是“失业者或非失业者”。因此,不是(A xor B):
tmp.Unemployed = ! ( D.Unemployed ^ type.Unemployed)