2012-03-11 12 views
3

私には、任意のタイプのコレクション(おそらくIEnumerable<T>またはList<T>)(たとえば、List<int>またはList<string>)を受け入れる方法があります。メソッドの内部ジェネリックコレクションパラメータを持つメソッド

iは、コレクションを反復処理する必要があり、各要素は文字列に変換し、同様に、1つの最終文字列にそれらを一緒に追加します。

"(12, 123, 22)" 

問題は、そのパラメータのコレクションはどのようなタイプのものとすることができる定義する方法です。私はこれがジェネリックについて何かだと思いますが、私はそれについてあまりよく分かりません。

しかし、私の事メソッドの定義は次のようになります。

public string myMethod(List<T> list) { } 

しかし、コンパイラはそれを許可していません。正しい構文を教えてください。

答えて

2
class A 
{ 
    public string myMethod<T>(List<T> list) { } 
} 

または

class B<T> 
{ 
    public string myMethod(List<T> list) { } 
} 

おそらくあなたがちょうどシーケンスの上に列挙する必要があるためIEnumerable<T>を使用することもできます。


あなたは組み込み関数を使用して達成することができ、同じ:

IEnumerable<X> input = new List<X> { new X(), new X() }; 
IEnumerable<string> s = list.Select(x => x.ToString()); 
string result = String.Join(", ", s); // "x, x" 

MSDNを参照してください。

+0

ありがとう、素晴らしい作品です。しかし、私は問題があります。時々私はリストの代わりにnullを渡す必要があります。私が試してみると、それは不可能です。エラーメソッド 'MainWCFRole.DB.TrackDAO.getTracks (string、System.Collections.Generic.List )の型引数は、使用法から推測できません。型引数を明示的に指定してみてください。 –

+0

@Vojtech:キャストしよう: '(リスト)null ' – abatishchev

+0

@Vojtech:同じメソッドのオーバーロードはいくつですか? – abatishchev

関連する問題