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

时间:2013-06-07 15:41:32

标签: c#

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

即:

var a = 123;
var b = "hello!";

swap(a, b); // hypothetical

System.Console.WriteLine(a);
System.Console.WriteLine(b);

输出:

  

您好!

     

123

3 个答案:

答案 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使用在编译时确定的静态类型)。如果变量的类型必须在运行时更改,则可以将变量声明为objectdynamic。但是,如果你这样做,值类型(包括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版本,我应该使用不同的类型(我认为)。