在不使用临时变量的情况下交换两个数字



我看了几个例子,发现了以下代码:

(a, b) = (b, a);

有人提到,这可以用来交换两个变量的值。

我试过如下:

int a = 5, b = 10;
Console.WriteLine(a + " " + b); // Prints --> 5 10

(b, a) = (a, b);
Console.WriteLine(a + " " + b); // Prints --> 10 5

这是什么语法?这是新的东西,还是得到交换结果的一些奇怪的技巧。它也可以与任意数量的变量一起使用吗。

类似:

(a, b, c) = (c, a, b); // a=c; b=a; c=b; or even more variables

它在=的右侧创建一个元组,然后在左侧将其解构(分解为不同的变量(。请参阅本页的精细手册

如果您熟悉Tuple<T1、T2>几年前推出:

var t = new Tuple<int,int>(a, b); //create with Item1 = a and Item2 = b
b = t.Item1;
a = t.Item2;

我不知道它到底会写什么代码,但这将是它的精神;要创建一个临时(可能是Value(元组,请将a和b分配给它,然后按相反的顺序再次将它们取出

最新更新