我有一个通用方法来帮助程序的不同部分处理不同类型的数组,该方法采用object[]
并返回object[]
。我很快意识到我无法将object[]
隐式转换为其他类型的数组。有没有一种方法可以声明该方法,以便可以告诉它返回什么类型,类似于可以使用任何类型的对象声明List
类的方法?
我知道我可以使用类似Array.ConvertAll
的方法来获取结果,但是我想在方法本身中处理转换。
答案 0 :(得分:3)
您的问题有点令人困惑,因为您使用了“泛型”一词,但是谈论的是对象数组(object[]
)。泛型是.NET中的一种语言功能,可让您将类型用作参数,例如一种方法。
具有讽刺意味的是,听起来仿制药正是您所需要的,因此让我们看一下基础知识。 您可以创建这样的通用方法:
T[] Manipulate<T>(T[] input)
{
// Do manipulation of array here
}
看到特殊的<T>
吗? T
是方法的类型参数。您将可以使用任何类型的数组来调用该方法:
var arr = new [] { 1, 2, 3 };
int[] result = Manipulate<int>(arr); // Actually, the <int> is not necessary in this case, since the compiler infers the type from the input
由于为该方法提供了一个整数数组,因此该方法的结果也将是一个整数数组(因为您指定了T[]
作为返回类型)。
我建议阅读一些有关泛型的MSDN文档: