小编典典

交换两个变量而不使用临时变量

c#

我希望能够在不使用C#中使用临时变量的情况下交换两个变量。能做到吗?

decimal startAngle = Convert.ToDecimal(159.9);
decimal stopAngle = Convert.ToDecimal(355.87);

// Swap each:
//   startAngle becomes: 355.87
//   stopAngle becomes: 159.9

阅读 220

收藏
2020-05-19

共1个答案

小编典典

首先,在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;
    }
}
2020-05-19