有没有办法告诉方法应该返回什么值类型?

时间:2019-05-18 01:12:21

标签: c#

我有一个通用方法来帮助程序的不同部分处理不同类型的数组,该方法采用object[]并返回object[]。我很快意识到我无法将object[]隐式转换为其他类型的数组。有没有一种方法可以声明该方法,以便可以告诉它返回什么类型,类似于可以使用任何类型的对象声明List类的方法?

我知道我可以使用类似Array.ConvertAll的方法来获取结果,但是我想在方法本身中处理转换。

1 个答案:

答案 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文档:

Introduction to Generics