新手Q使用参考和泛型

时间:2010-02-25 23:12:34

标签: c# generics reference

这是我第一次需要使用泛型和引用,而我却遇到了困难。我知道这很明显。

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)'的最佳重载方法有一些无效的参数。

非常感谢你提出这些类型的问题, 维克多

2 个答案:

答案 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();
    }
  }