0

私は次の静的関数を持っています:

public static string codeList<T>(List<T> thelist, Func<T, string> coder);

この関数を自分のオブジェクトで使用しても問題ありません。たとえば、次のようになります。

string code = codeList<MyClass>(myclassList, MyClass.code);

MyClass.code は、MyClass を取得して文字列を返す静的関数 (MyClass で定義) です。

問題は、この関数を使用しようとするとき、List<int>またはList<double>現在行っていることは、およびそれらを使用するなどの静的を事前定義Func<int,string> intCoder = (x) => x.ToString();するFunc<double,string> (x) => x.ToString();ことです。それを行う別の方法はありますか?何かのようなもの:

string code = codeList<int>(intList, Int32.ToString);
4

2 に答える 2

2

これを行うことができます

string code = codeList<int>(intList, Convert.ToString);

適切な署名をConvert.ToString持つオーバーロードがあるのはたまたまです。

問題int.ToStringは、そのオーバーロードのどれも適切な署名を持っていないことintです (暗黙的にパラメーターをとらないため)。その場合、アダプター関数を定義する以外にできることはありません。

于 2012-10-23T08:20:27.887 に答える
1

funcの変数を宣言する必要はありません。ラムダ式をパラメーター値として指定できます

string code = codeList(intList, i => i.ToString());
于 2012-10-23T08:24:41.057 に答える