-5

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

IE:

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

swap(a, b); // hypothetical

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

输出:

你好!

123

4

3 回答 3

4

你不能用不同类型的变量来做。当变量属于同一类型时,最简单的方法是“天真的”实现,带有 a 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必须在运行时更改。但是,如果您这样做,值类型(包括ints)将被包装在引用类型中。

于 2013-06-07T15:44:03.847 回答
1
object varA = 123;
object varB = "hello!";
object temp = varA;
varA = varB;
varB = temp;

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

于 2013-06-07T15:49:50.407 回答
1

You can't do that with var.

If you really needed to do something like that, you could use dynamic and your typical implementation of a swap with temp:

dynamic a = 123;
dynamic b = "hello!";
var temp = a;
a = b;
b = temp;
于 2013-06-07T15:48:58.807 回答