gpt4 book ai didi

C# lambda 表达式作为函数参数

转载 作者:IT王子 更新时间:2023-10-29 04:53:56 24 4
gpt4 key购买 nike

我最近一直忙于研究 lambda 表达式,并且有一些我一直想学习但似乎无法理解的特定功能。

假设我的代码中有以下逻辑:

List<A> foo; // assuming this is populated
string[] bar = foo.Select<A,string>(x => x.StringProperty).ToArray<string>();

现在,我可能想将整个操作抽象为一个处理程序方法,这样我就可以改为这样做:

string[] bar = MakeArray<A,string>(foo, x => x.StringProperty);
int[] foobar = MakeArray<A,int>(foo, x => x.IntegerProperty);

我将如何着手编写该方法的主体?我预见将签名声明为:

U[] MakeArray<T,U>( /* some lambda magic? */ ) where T : IEntity {}

但我不知道如何指定我期望将 lambda 表达式作为方法参数,以及它如何准确地转换为方法的主体。

谁能告诉我如何创建 MakeArray()上面的功能?我很确定,一旦我看到它是如何完成的,我就可以从那里拿起它。

编辑

正如评论中指出的那样,MakeArray()需要引用 IEnumerable<> .更新以反射(reflect)这一点。

最佳答案

public static U[] MakeArray<T, U>(this IEnumerable<T> @enum, Func<T, U> rule)
{
return @enum.Select(rule).ToArray();
}

关于C# lambda 表达式作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5396746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com