用于从一个方法返回多个类型的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,但我想知道你认为什么是解决这种情况的最佳方案。

用于从一个方法返回多个类型的C#泛型

在这一点上,您的方法不是通用的,因为它与T参数无关-一个选项是使输出类型与所有可能的返回值兼容(在您的示例中,您的选择是ICollectionIEnumerableIEnumerable<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);
    }
}