c#中我还不知道类型的对象列表

本文关键字:对象 列表 类型 不知道 | 更新日期: 2023-09-27 17:51:02

我在设计我的函数时遇到了一个问题,所以它可以对不同的类型采取不同的行动。我的函数用于创建具有不同类型的对象的List,因此创建几个类似的函数不会有问题,但如果可能的话,我想避免它,以使我的代码更短:

static const int FIRST_TYPE = 0;
static const int SECOND_TYPE = 1;
static const int THIRD_TYPE = 2;

我使用这些int作为函数的参数:

public void foo(int type)
{
    List<TypeIDontYetKnow> deserialized; 
    switch (type)
    {
        case FIRST_TYPE:
            deserialized = new List<A>();
            break;
        case SECOND_TYPE:
            deserialized = new List<B>();
            break;
        case THIRD_TYPE:
            deserialized = new List<C>();
            break;
    }
}

有可能实现这样的事情吗?

c#中我还不知道类型的对象列表

您需要一个泛型方法

public void foo<T>()
{
    List<T> deserialized = new List<T>();
}

可以通过为deserialized使用非泛型IList来实现它,因为List<T>实现了它:

IList deserialized;
然而,

不应该这样做。关于你想达到的目标的更多细节可能有助于我们建议你一个更好的解决方案:

  • 首先是MBen用通用方法的答案
  • 如果A, BC有一个相互的子类,可能不区分类型之间使用List<ABCBase>首先。