这是我第一次需要使用泛型和引用,而我却遇到了困难。我知道这很明显。
public class Program
{
void SWAP<T>(ref T a, ref T b) { T dum = a; a = b; b = dum; }
static void Main(string[] args)
{
double a = 1; double b = 2;
double c = SWAP(a, b);
Console.Write(a.ToString());
Console.Read();
}
}
在调试“SWAP(a,b)”时给出错误:'Program.SWAP(ref double,ref double)'的最佳重载方法有一些无效的参数。
非常感谢你提出这些类型的问题, 维克多
答案 0 :(得分:4)
调用使用ref值的函数时,需要告诉编译器接受ref。您的SWAP也不会返回值。
所以交换行应该是
SWAP(ref a, ref b);
答案 1 :(得分:2)
是..您需要使用ref标记传递值
编辑直到编译
public class Program {
static void SWAP<T>( ref T a, ref T b ) {
T dum = a;
a = b;
b = dum;
}
static void Main( string[] args ) {
double a = 1; double b = 2;
SWAP<double>( ref a,ref b );
Console.Write( a.ToString() );
Console.Read();
}
}