我希望能够交换两个变量,而无需在C#中使用临时变量。能做到吗?
decimal startAngle = Convert.ToDecimal(159.9);
decimal stopAngle = Convert.ToDecimal(355.87);
// Swap each:
// startAngle becomes: 355.87
// stopAngle becomes: 159.9
最佳答案
首先,像C#这样在没有临时变量的情况下进行交换是非常糟糕的主意。
但是为了回答,您可以使用以下代码:
startAngle = startAngle + stopAngle;
stopAngle = startAngle - stopAngle;
startAngle = startAngle - stopAngle;
但是,如果两个数字相差很大,则四舍五入会出现问题。这是由于浮点数的性质。
如果要隐藏临时变量,可以使用实用程序方法:
public static class Foo {
public static void Swap<T> (ref T lhs, ref T rhs) {
T temp = lhs;
lhs = rhs;
rhs = temp;
}
}