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

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

C#开发笔记概述

文章目录

概述

如何实现交换2个变量的值不引入中间变量呢?

解释

这里给出常见的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#语言不支持。

本文由 .Net中文网 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:https://www.byteflying.com/archives/963

发表评论

登录后才能评论