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

本文关键字:if 最佳 是什么 方法 标签 两个 比较 变量 | 更新日期: 2023-09-27 18:36:46

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

void CompareNumber() {
    int oneNumber;
    int secondNumber;
    if (oneNumber > secondNumber)
        {
        DoSomething();
        }
    else if (oneNumber < secondnumber)
        {
        DoSomethingElse();
        }
    else if (oneNumber == secondnumber)
         {
         DoSomethingDifferent();
         }
}

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

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

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

但是,当您说"特别是因为我多次以这种方式比较变量"时,那里可能有一些问题需要解决。理想情况下,您应该能够重复使用您编写的内容一次。

您可以使用三元运算符缩短它,但您这样做是正确的。

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子句来处理最终情况。

由于您要求使用通用方法来使语句看起来更整洁,因此如果要分配值,请考虑条件运算符"?:"。 它不适用于调用 void 函数,但是,例如,如果您想使用 CompareNumber() 返回两个 int 值中较高的一个,您可以这样做:

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

不能说我看到了任何简单的方法来使您的示例代码更优雅。 如果要实现三种不同的情况,则不能跳过任何内容。 当然,我可以很聪明 alec 并为您简化您的函数(并且使用未初始化的变量不会出错):

void CompareNumber()
{
    DoSomething();
}

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