2017-01-15 55 views
0

獲取錯誤:C#泛型方法:類型參數所需

使用通用方法 'Program.Sort3Vars(T [],T [],T [])' 需要1個類型的參數。

它們在這裏沒有定義嗎?

Sort3Vars<int, string, string>(cost, var1, var2); 

這是針對我製作的排序算法。我希望能夠通過整數或字符串或double等進行排序,而不必使用不同的數據類型多次編寫相同的方法。

這是我的代碼,我得到的錯誤。

namespace ConsoleApplication10 
{ 
    class Program 
    { 
     public static int[] cost = { 2, 5, 3, 4, 2, 1 }; 
     public static double[] costdouble = { 2.5, 4.30, 3.33, 4, 2, 1.10 }; 
     public static string[] var1 = { "apple", "mango", "banana", "grapes", "chicken", "ham" }; 
     public static string[] var2 = { "fruit", "fruit", "fruit", "fruit", "meat", "meat", }; 

     static void Main(string[] args) 
     { 
      Sort3Vars<int, string, string>(cost, var1, var2); 
      //Using generic method 'Program.Sort3Vars(T[],T[],T[])' requires 1 type arguments. 
     } 

     public static void Sort3Vars<T>(T[] tkey, T[] tvar1, T[] tvar2) 
     { 
      //sort tvar1, tvar2 by cost/tkey stub. 
     } 
    } 
} 
+0

的方法有** **一個泛型類型,你想有** 3 ** ... –

+0

完美啊!謝謝。我對c#相當陌生,所以沒有完全理解泛型。我添加了T,U和X,這似乎有竅門!謝謝你的幫助! – masterg174

回答

2

這與3個參數和一個通用的參數,T的方法,即對於所有3個參數是相同的。你想用3個泛型參數,每一個參數的方法:

public static void Sort3Vars<TKey, T1, T2>(TKey[] tkey, T1[] tvar1, T2[] tvar2) 
{ 
    //sort tvar1, tvar2 by cost/tkey stub. 
}