用于从一个方法返回多个类型的C#泛型
本文关键字:类型 泛型 返回 一个 用于 方法 | 更新日期: 2023-09-27 18:27:23
的想法是制作一个可以返回不同类型的方法,在我的例子中是字符串数组、字符串堆栈和字符串列表。
这是合成代码:
static <T> TestMethod<T>(string [] test,int option)
{
switch (option)
{
case 1://Return array of strings
return test;
case 2:
return new List<string>(test);
case 3:
return new Stack<string>(test);
}
}
我输入一个字符串列表,并通过指定一个选项来获得所需的输出。
现在,该代码给出了大量的错误,stackoverflow上的其他答案都是模糊和令人困惑的,所以我避免了它们(我试着读了10个,没有一个是清楚的,所有的都给出了编译错误)
据我所知,有一个错误是我不能简单地进行
static <T> TestMethod<T>
因为我需要以某种方式声明T是什么(字符串、列表等)。
不,我想归还我喜欢的东西。我看到有人在使用Convert.ChangeType,但我想知道你认为什么是解决这种情况的最佳方案。
在这一点上,您的方法不是通用的,因为它与T
参数无关-一个选项是使输出类型与所有可能的返回值兼容(在您的示例中,您的选择是ICollection
、IEnumerable
和IEnumerable<string>
):
static IEnumerable<string> TestMethod(string [] test,int option)
{
switch (option)
{
case 1://Return array of strings
return test;
case 2:
return new List<string>(test);
case 3:
return new Stack<string>(test);
}
}
如果你想让第一个参数通用,你可以做:
static IEnumerable<T> TestMethod<T>(T [] test,int option)
{
switch (option)
{
case 1://Return array of strings
return test;
case 2:
return new List<T>(test);
case 3:
return new Stack<T>(test);
}
}