ref or out 修饰方法的参数,调用的时候参数类型必须严格匹配。例如:
定义了方法:
public static void Swap(ref object obja, ref object objb){...};
int a=1;
int b=3;
Swap(ref a, ref b);
会产生编译错误,它提示你没有定义public static void Swap(ref int obja, ref int objb){...};这样一个方法。
如果你尝试这样调用:
int a=1;
int b=3;
Swap(ref (object)a, ref (object)b);
会产生一个编译错误,大概意思是:必须使用可赋值的变量作为参数。
!!正确的使用方式是:
int a=1;
int b=3;
object o1=(object)a;
object o2=(object)b;
Swap(ref o1, ref o2);