如何在 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
你不能用不同类型的变量来做到这一点。当变量的类型相同时,最简单的方法是带有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
使用编译时确定的静态类型(。如果变量的类型必须在运行时更改,则可以将变量声明为 object
或dynamic
。但是,如果这样做,值类型(包括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 版本的不同类型(我认为(。