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();andFunc<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

您不必为函数声明变量。您可以将 lambda 表达式作为参数值

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