【发布时间】:2018-11-26 20:43:03
【问题描述】:
static void Swap<T>(ref T var1, ref T var2)
{
T temp = var1;
var1 = var2;
var2 = temp;
}
static void Swap2(ref object var1, ref object var2)
{
object temp = var1;
var1 = var2;
var2 = temp;
}
我认为 Swap 在某些方面比 Swap2 更可取?
【问题讨论】:
-
Swap将确保两个参数具有相同的类型(或基本类型)。 -
那么Swap2其实更灵活?
-
好吧,如果您不重视类型安全或性能 - 当然,它更灵活。
-
要了解区别,请为这两种方法(调用者)编写一些代码,尝试交换两个字符串的值,然后是两个整数。您会注意到调用
Swap的代码编写起来相当简单。 -
对于值类型,例如
int,在调用object版本的方法时,值必须先装箱然后再拆箱,但在调用通用版本时则不需要。对于引用类型,在调用object版本时,此代码中没有任何内容可以确保两个对象是相同甚至兼容的类型。
标签: c#