C# 将值从一个数组映射到另一个数组的通用扩展方法C
我正在尝试进行一个泛型扩展,以从整数数组创建MyClass数组 我认为方法调用应该是这样的:C# 将值从一个数组映射到另一个数组的通用扩展方法C,c#,C#,我正在尝试进行一个泛型扩展,以从整数数组创建MyClass数组 我认为方法调用应该是这样的: MyClass[] myClassArray = intArray.MapValues(x => new MyClass(x)); 下面是我对我需要做什么的最佳猜测: public static TTarget[] MapValues<TSource, TTarget>(this TSource[] source, Func<TSource, TTarget> opera
MyClass[] myClassArray = intArray.MapValues(x => new MyClass(x));
下面是我对我需要做什么的最佳猜测:
public static TTarget[] MapValues<TSource, TTarget>(this TSource[] source, Func<TSource, TTarget> operation) {
TTarget[] target = new TTarget[source.Length];
for (int i = 0; i < source.Length; i++) {
target[i] = operation; // problem is here "Cannot convert type Func<TSource, TTarget> to TTarget"
}
return target;
}
我不认为Func操作是我在这种情况下需要的,但我对扩展方法是新手,在互联网上找不到任何有用的东西,也不知道要搜索什么
提前感谢。您不需要编写任何扩展方法,您可以使用如下选择:
MyClass[] myClassArray = intArray.Select(x => new MyClass()).ToArray();
此方法已存在:
MyClass[] myClassArray = Array.ConvertAll(intArray, x => new MyClass(x));
您也可以使用.Select,但它的输出不是数组。。。如果您将它与.ToArray结合使用,它的效率仍然低于Array。ConvertAlloperationsource[i]将为给定项调用函数,您只需使用select而不是您自己的扩展方法。请尝试以下操作:MyClass[]myClassArray=intArray.Selectx=>new MyClass.ToArray@Commonaught文档以及包括本文档在内的互联网上的许多站点都有使用Select的示例。@ArsalanValoojerdi:您应该将此作为答案发布。它可能对下一个提出类似想法的人有用。这当然是可吐的,而且比OP想要做的要简单得多