编写比较两个变量的多个 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
子句来处理最后的情况。
我是 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
子句来处理最后的情况。