如何在 C# 中交换两个不同类型的变量

本文关键字:两个 同类型 变量 交换 | 更新日期: 2023-09-27 18:17:28

如何在C#中交换两个变量?

即:

var a = 123;
var b = "hello!";
swap(a, b); // hypothetical
System.Console.WriteLine(a);
System.Console.WriteLine(b);

输出:

你好!

123

如何在 C# 中交换两个不同类型的变量

你不能用不同类型的变量来做到这一点。当变量的类型相同时,最简单的方法是带有temp的"朴素"实现:

var temp = a;
a = b;
b = temp;

您可以将其包装到一个通过引用获取其参数的 swap 方法中:

static void Swap<T>(ref T a, ref T b) {
    var temp = a;
    a = b;
    b = temp;
}

不能更改静态类型变量的类型(var使用编译时确定的静态类型(。如果变量的类型必须在运行时更改,则可以将变量声明为 objectdynamic。但是,如果这样做,值类型(包括int(将被包装在引用类型中。

你不能

var这样做。

如果你真的需要做这样的事情,你可以使用 dynamic 和你典型的 temp 交换实现:

dynamic a = 123;
dynamic b = "hello!";
var temp = a;
a = b;
b = temp;
object varA = 123;
object varB = "hello!";
object temp = varA;
varA = varB;
varB = temp;

这应该适用于所有 .NET 版本的不同类型(我认为(。