如何在C#中交换两个变量?
即:
var a = 123;
var b = "hello!";
swap(a, b); // hypothetical
System.Console.WriteLine(a);
System.Console.WriteLine(b);
输出:
您好!
123
答案 0 :(得分:4)
您不能使用不同类型的变量。当变量属于同一类型时,最简单的方法是使用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
s)将被包装在引用类型中。
答案 1 :(得分:1)
var
无法做到这一点。
如果你真的需要做类似的事情,可以使用dynamic
以及使用temp的交换的典型实现:
dynamic a = 123;
dynamic b = "hello!";
var temp = a;
a = b;
b = temp;
答案 2 :(得分:1)
object varA = 123;
object varB = "hello!";
object temp = varA;
varA = varB;
varB = temp;
对于所有.NET版本,我应该使用不同的类型(我认为)。