c# – 是否可以接受只使用’if-else’语句的’else’部分?

有时,我觉得更容易检查所有的条件是否都是真的,但只处理“其他”的情况。

我想我有时觉得更容易知道某事是有效的,并假设所有其他情况都是无效的。

例如,假设我们只是在关心什么时候出现问题:

object value = GetValueFromSomeAPIOrOtherMethod();

if((value != null) && (!string.IsNullOrEmpty(value.Prop)) && (possibleValues.Contains(value.prop)))
{
    // All the conditions passed, but we don't actually do anything
}
else
{
    // Do my stuff here, like error handling
}

或者我应该改为:

object value = GetValueFromSomeAPIOrOtherMethod();

if((value == null) || (string.IsNullOrEmpty(value.Prop)) || (!possibleValues.Contains(value.prop)))
{
    // Do my stuff here, like error handling
}

或者(我觉得丑陋):

object value = GetValueFromSomeAPIOrOtherMethod();

if(!((value != null) && (!string.IsNullOrEmpty(value.Prop)) && (possibleValues.Contains(value.prop))))
{
    // Do my stuff here, like error handling
}
最佳答案
虽然对我来说很少,我有时觉得在这种形式的写作导致最清晰的代码在某些情况下。转到提供最清晰的表单。编译器不会在意,并且应该生成基本上(可能完全相同)的代码。

可能更清楚的是,为了定义一个布尔变量,在if()语句中赋予条件,然后将代码写为该变量的否定:

bool myCondition = (....);
if (!myCondition)
{
    ...
}

转载注明原文:c# – 是否可以接受只使用’if-else’语句的’else’部分? - 代码日志