我的想法是创建一个可以返回不同类型的方法,在我的例子中,字符串数组,字符串堆栈和字符串列表。
这是一个hypotetical代码:
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,但我想知道你认为对于这种情况最好的解决方案。
答案 0 :(得分:2)
此时您的方法不是通用的,因为它对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);
}
}