消除回归功能

MAC*_*MAC 0 c#

如何消除多个返回语句到一个语句.例如:我有一个if子句,if子句的结果为true,它将返回0.或返回1,如果包含另一个if子句则相同的else.它还有返回值.我怎样才能将这四个回报陈述归为一个?

这是该计划

if (IgC == true)
        {
            if (val1.ToUpper() == val2.ToUpper())
            {
                return 0;
            }
            else
            {
                return 1;
            }
        }

        else
        {
            if (val1 == val2)
            {
                return 0;
            }

            else
            {
                return 1;
            }
        }
Run Code Online (Sandbox Code Playgroud)

Tom*_*lak 7

这是我对逻辑的猜测......

int retVal;

if (condition) 
{
  // statements
  retVal = 0;
}
else 
{
  // statements
  if (otherCondition)
  {
    retVal = 1;
  }
  else
  {
    retVal = 2;
  }
}

return retVal;
Run Code Online (Sandbox Code Playgroud)

以及您现在发布的更新:

int retVal;

if (IgC)
   retVal = (val1.ToUpper() == val2.ToUpper()) ? 0 : 1;
else
   retVal = (val1 == val2) ? 0 : 1;

return retVal;
Run Code Online (Sandbox Code Playgroud)

我避免嵌套三元运算符或用它们检查多个条件,因为这会使代码模糊不清.如果你更明确的话,那并不是代码的效率会降低,所以整个事情只是关于可读性.

我尝试权衡代码长度和视觉复杂性与表现力,而if/ternary组合对我来说似乎是一个很好的中间立场.