我有一个逻辑问题。我收集了员工对象 有 3 个具有句柄的过滤条件条件 例如员工姓名,办公室名称,工资。
现在这些过滤条件应该匹配(员工姓名和/或办公室名称和/或薪水)
所以这里我必须写 (2 raise n) -1 if 条件来处理这种情况。
有没有其他方法可以做到这一点。 对于(员工姓名和/或办公室名称)条件,我正在执行以下操作
if (criteria.EmpName != "" && criteria.OfficeName != "")
{
if (emp.EmpName == criteria.EmpName && emp.OfficeName == criteria.OfficeName)
{
bIsMatch = true;
}
}
else
{
if (criteria.EmpName != "" && emp.EmpName == criteria.EmpName)
bIsMatch = true;
else if (criteria.OfficeName != "" && emp.OfficeName == criteria.OfficeName)
bIsMatch = true;
}
现在如果还必须处理 saraly,我至少要写 5 个条件。
还有其他方法吗?
最佳答案
有很多方法可以做到这一点,但由于您没有指定一种特定的语言,而且我觉得没有资格判断您的编码风格,这里有一个保持代码的一般形式,同时演示一些更好的逻辑:
bool bIsMatch = true;
if (criteria.EmpName != "" && criteria.EmpName != emp.EmpName) {
bIsMatch = false;
} else if (criteria.OfficeName != "" && criteria.OffIceName != emp.OfficeName) {
bIsMatch = false;
} /* Repeat for as many conditions as there are */
if (bIsMatch) {
/* None of the checks above failed */
}
关于c# - 处理 (2 raise to n) -1 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141470/