c# – 使用XOR交换值

这是在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的等价

点赞