编写比较两个变量的多个 if 标签的最佳方法是什么

What is the best way to write multiple if tags that compare two variables

我是 C# 编码的初学者,我试图比较两个 int 变量 (C#)。

void CompareNumber() {
    int oneNumber;
    int secondNumber;

    if (oneNumber > secondNumber)
        {
        DoSomething();
        }

    else if (oneNumber < secondnumber)
        {
        DoSomethingElse();
        }

    else if (oneNumber == secondnumber)
         {
         DoSomethingDifferent();
         }
}

虽然这确实有效,但看起来有点乱,尤其是因为我多次以这种方式比较变量。有没有更简洁的方法来做到这一点,让它看起来更整洁? (除了省略大括号)

你已经写的方式是最好的方式:)绝对没有错。

但是,当您说 "especially because I compare variables in this manner many times" 时,可能需要解决一些问题。理想情况下,您应该能够重复使用您编写的内容一次。

由于您要求的是使 if 语句看起来更整洁的一般方法,因此如果您正在分配一个值,请考虑 conditional operator“?:”。它不适用于调用 void 函数,但是,例如,如果您想使用 CompareNumber() return 两个 int 值中较高的一个,您可以这样做:

int CompareNumber(int first, int second)
{
    return first > second ? first : second;
}

虽然我看不出有什么简单的方法可以使您的示例代码更优雅。如果您要实施三种不同的情况,则不能跳过任何内容。当然我可以是聪明的 alec 并为你简化你的函数(并且它不会因为使用未初始化的变量而出错):

void CompareNumber()
{
    DoSomething();
}

编辑:之前说过你不能用条件运算符调用函数,但我的意思是你不能调用 void 函数......它们必须 return 一个值,否则你会得到一个编译器错误.

您可以使用三元运算符缩短它,但您做对了。

void CompareNumber(int first, int second) {

    (first > second)
        ? DoSomething()
        : (second > first)
            ? DoSomethingElse()
            : DoSomethingDifferent();
}

您可以在增量符号上使用 switch

switch ( Math.Sign( Alpha - Beta ) )
{
case -1: // Alpha < Beta.
    // Do something.
    break;
case 0: // Alpha == Beta.
    // Do something.
    break;
case 1: // Alpha > Beta.
    // Do something.        
}

当然,您可以使用 switch 中的 default 子句来处理最后的情况。