这必须是重复但我还没有找到它.我发现这个问题是相关的,因为它回答了为什么建议使用方法组而不是lambda.
但是,如果方法不在当前类中而方法不是,我如何使用现有方法组而不是lambda static?
假设我有一个我希望转换为字符串的整数列表,我可以使用List.ConvertAll,但我需要传递Converter<int, string>给它:
List<int> ints = new List<int> { 1 };
List<string> strings = ints.ConvertAll<string>(i => i.ToString());
Run Code Online (Sandbox Code Playgroud)
这有效,但它使用lambda创建了一个不必要的匿名方法.所以,如果Int32.ToString是静态的,int我会写:
List<string> strings = ints.ConvertAll<string>(Int32.ToString);
Run Code Online (Sandbox Code Playgroud)
但那当然不能编译.那么我怎么能使用方法组呢?
如果我要创建这样的实例方法
string FooInt(int foo)
{
return foo.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我可以使用strings = ints.ConvertAll<string>(FooInt);,但这不是我想要的.我不想创建一个新方法只是为了能够使用现有的方法.