2010-02-25 40 views
1

這是我第一次需要使用泛型和引用,並且我遇到了困難時期。我知道這是明顯的。關於使用參考和泛型的新手Q

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)' 具有一些無效參數。

非常感謝忍受了這些類型的問題, 維克多

+0

添加的語言標籤 – Joel 2010-02-25 23:13:40

回答

2

是..你需要通過與裁判標籤

編輯的值,直到它編譯

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(); 
    } 
    } 
+1

+1。雖然''不是必需的。 – 2010-02-25 23:15:47

+0

SWAP返回void,所以不應該有任務。 – Joel 2010-02-25 23:16:31

+0

謝謝JDMAX,請記住,我也犯了賦值爲c的錯誤,這是錯誤,因爲SWAP是無效的。 – Victor 2010-02-25 23:17:10

4

當調用一個使用ref值的函數時,你需要告訴編譯器採用ref。你的SWAP也不會返回一個值。

所以互換額度應該是

SWAP(ref a, ref b);