我是C#编码的初学者,我试图比较两个int
变量(C#)。
void CompareNumber() {
int oneNumber;
int secondNumber;
if (oneNumber > secondNumber)
{
DoSomething();
}
else if (oneNumber < secondnumber)
{
DoSomethingElse();
}
else if (oneNumber == secondnumber)
{
DoSomethingDifferent();
}
}
虽然这确实有效,但它看起来有点混乱,特别是因为我多次以这种方式比较变量。有没有更简洁的方法来做到这一点,使它看起来更整洁? (除了省略大括号外)
答案 0 :(得分:3)
你已经写好它的方式是最好的方法:)它绝对没有错。
然而,当你说“特别是因为我多次以这种方式比较变量”时,可能会有一些东西需要解决。理想情况下,您应该能够重复使用一次写入的内容。
答案 1 :(得分:1)
由于您要求提供一般方法,使语句看起来更整洁,请考虑conditional operator&#34;?:&#34;如果你正在分配一个值。它不能用于调用void函数,但是,例如,如果你想用CompareNumber()返回两个int值中的较高者,你可以这样做:
int CompareNumber(int first, int second)
{
return first > second ? first : second;
}
不能说我看到任何简单的方法可以使您的示例代码更加优雅。如果您要实施三种不同的案例,则无法跳过任何内容。当然,我可以聪明的alec并简化你的功能(使用未初始化的变量也不会有错误):
void CompareNumber()
{
DoSomething();
}
编辑:之前声明你不能用条件运算符调用函数,但我的意思是你不能调用void函数......它们必须返回一个值,否则你会得到一个编译器错误
答案 2 :(得分:1)
你可以使用三元运算符来缩短它,但你正确地做到了。
void CompareNumber(int first, int second) {
(first > second)
? DoSomething()
: (second > first)
? DoSomethingElse()
: DoSomethingDifferent();
}
答案 3 :(得分:1)
您可以在delta的signum上使用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.
}
当然,您可以使用default
中的switch
子句来处理最终案例。