【发布时间】:2014-10-04 16:35:28
【问题描述】:
首先,我有一些遗留的.NET 2 代码,我需要将扩展函数转换为简单函数。所以我将从我想要实现的目标开始。
我有两个对象数组,可以是任何对象,例如 int
int[] a = new int[] { 1, 2, 3 };
int[] b = new int[] { 4, 5, 6 };
而我唯一想做的就是:
var y = Concat(a, b);
然后返回一个数组。
问题是我无法找出正确的组合来转换以下函数。
public static class GenericExt
{
public static T Concat<T>(this T[] args, T[] args2)
{
if (!typeof(T).IsArray) throw new ArgumentException("Concat accepts only arrays");
Type elementType = typeof(T).GetElementType();
Array array = Array.CreateInstance(elementType, args.Length + args2.Length);
args.CopyTo(array, 0);
args2.CopyTo(array, args.Length);
return (T)(object)array;
}
}
感谢任何更正和帮助。
【问题讨论】:
-
你不需要这个检查
if (!typeof(T).IsArray)并且你应该将返回类型更改为T[]
标签: c# arrays generics refactoring c#-2.0