考虑这个函数,您可以将其视为真值表:
public Foo doSomething(bool a, bool b) {
if ( a && b) return doAB();
else if ( a && !b) return doA();
else if (!a && b) return doB();
else if (!a && !b) return doNotANotB();
else throw new Exception("Well done, you defeated boolean logic!");
}
编译器坚持最后一个else
子句。但从真值表的角度来看,这是一个不可能的状态。
是的,它有效,是的,我可以忍受它。但我想知道 C# 中是否有某种机制可以避免这种代码,或者我是否遗漏了一些明显的东西?
更新:
对于奖励积分,纯粹出于好奇,是否有任何语言以不同的方式处理此类事情?也许这不是语言问题,而是智能编译器之一(但我想边缘情况将是难以想象的复杂)。