C# 有没有更好的方法来编写>;Ba:b

C# 有没有更好的方法来编写>;Ba:b,c#,C#,我想写作 if (a /b > b/a) double foo = a/b; else double foo = b/a; 写这个似乎很奇怪,所以我把它改成了 double foo = a/b > b/a ? a/b : b/a; 有更好的方法吗?更可读的方法(至少是IMHO)是使用内置的: 我想你可以用 “更好”在旁观者的眼里…这取决于你是否需要速度。条件检查和三元运算符与速度有关,因为Math.Max较慢,因为方法调用会影响CPU PROC call/RET和堆栈PUSH/P

我想写作

if (a /b > b/a) double foo = a/b;
else double foo = b/a;
写这个似乎很奇怪,所以我把它改成了

double foo = a/b > b/a ? a/b : b/a;
有更好的方法吗?

更可读的方法(至少是IMHO)是使用内置的:

我想你可以用


“更好”在旁观者的眼里…这取决于你是否需要速度。条件检查和三元运算符与速度有关,因为Math.Max较慢,因为方法调用会影响CPU PROC call/RET和堆栈PUSH/POP。@OlivierRogier Math.Max并不较慢,因为它会被JITer内联(至少在发布模式下编译时是如此)。当使用三元表达式“手动”执行时,将没有调用、RET和PUSH/POP,只有CMP、JGE和MOV。
double foo = Math.Max(a/b, b/a);
double foo = Math.Max(a/b, b/a);