我希望能够在不使用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; } }