C#开发笔记之07-如何实现交换2个变量的值而不引入中间变量?

版权声明:Iori 的技术分享,所有内容均为本人原创,引用请注明出处,谢谢合作! https://blog.csdn.net/qq_31116753/article/details/82505861

C#开发笔记概述 

这里给出常见的7种方法,仅供大家参考,部分实现C#不支持。

 1、加减减法

private static void Swap1(ref int a, ref int b) {
    a = a + b;
    b = a - b;
    a = a - b;
}

2、减减加法

private static void Swap2(ref int a, ref int b) {
    a = b - a;
    b = b - a;
    a = b + a;
}

3、加减赋值法

private static void Swap3(ref int a, ref int b) {
    //C#不支持此方法,C或C++可以
    //a = a + b - (a = b);
}

4、加减减赋值法

private static void Swap4(ref int a, ref int b) {
    //C#不支持逗号表达式,C或C++可以
    //a = (a = a + b, b = a - b, a - b);
}

5、异或法

private static void Swap5(ref int a, ref int b) {
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

6、汇编法

__asm
{
    mov eax,a;
    mov ecx,b;
    push dword ptr[eax];
    push dword ptr[ecx];
    pop dword ptr[eax];
    pop dword ptr[ecx];
}

7、加乘赋值法

private static void Swap7(ref int a, ref int b) {
    b = a + 0 * (a = b);
}

请注意:方法3、4、6,C#语言不支持。

猜你喜欢

转载自blog.csdn.net/qq_31116753/article/details/82505861
今日推荐