这是在C和C#中交换值的有效方法.
X ^= Y;
Y ^= X;
X ^= Y;
这是在C中交换值的有效方法.
X ^= Y ^= X ^= Y;
但为什么这不适用于C#?
最佳答案
int X = 3;
X = X + X++; // X = 6;
int X = 3
X = X++ + X; // X = 7;
同理:
int X = 3;
int Y = 5;
X = (Y ^= X ^= Y)^X; // X = 5
然而:
int X = 3;
int Y = 5;
X = X^(Y ^= X ^= Y); // X = 0
不幸:
X = X ^(Y ^ = X ^ = Y)是X ^ = Y ^ = X ^ = Y的等价