我在 Windows 窗体 C# 程序的 IF 语句(在 foreach 循环中)中有此 Or 条件:
if ((splittedFile.Count() != 3) || (splittedFile.Count() != 4))
continue;
它总是如此continue
, 即使splittedFile.Count()
是3或4。
问题是,如果我删除 Or 条件:
if ((splittedFile.Count() != 4))
continue;
它工作正常!有什么想法吗?
这是正确的行为,您需要使用&&
.
原因是计数是固定数字,比方说n。现在条件如下:
n不是 3 或n不是 4。
Given n是 4,这意味着它不是 3,因此测试成功,反之亦然。
编译器无法检测到这是微不足道的,因为两者之间if
声明,Count()
可能会改变(例如在多线程设置第二个线程将在集合中添加/删除某些内容的位置)。我同意,但是某些分析工具在某些情况下可能能够检测到这种微不足道的行为。但一般来说,这样的分析无法实施,因为赖斯定理.
如果你使用&&
,表达式为:
n不是 3and n不是 4。
因此这两个条件都应该为真。换句话说,只有当n小于 3 且大于 4,则条件成立。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)