C# 在编译时不知道类型的情况下创建IEnumerable[]

C# 在编译时不知道类型的情况下创建IEnumerable[],c#,C#,在编译时,我必须在不知道类型的情况下创建实例 我的代码是这样的: IEnumerable[] columns = new IEnumerable[5]; columns[0] = new string[]{}; 我必须能够在不知道类型(在上面的示例中是字符串)的情况下创建列[0] 我找不到解决问题的办法,欢迎任何建议 提前感谢。您可以像这样使用泛型: class MyBusiness<T> where T: new() { public List&l

在编译时,我必须在不知道类型的情况下创建实例

我的代码是这样的:

     IEnumerable[] columns = new IEnumerable[5]; 

     columns[0] = new string[]{};
我必须能够在不知道类型(在上面的示例中是字符串)的情况下创建列[0]

我找不到解决问题的办法,欢迎任何建议


提前感谢。

您可以像这样使用泛型:

class MyBusiness<T> where T: new()
{
    public List<T> coll { get; set; }

    public MyBusiness(){
        coll = new List<T>();
    }

    public void DoSth(){
        T t = new T();
        coll.Add(t);
    }
}
classmybusiness其中T:new()
{
公共列表coll{get;set;}
公共事业(){
coll=新列表();
}
公开无效DoSth(){
T=新的T();
coll.Add(t);
}
}

您将需要查看。它们允许您创建一个不需要知道类型的类,直到您使用它

public class Column<T>
{
    public T Item { get; set; }
}
公共类列
{
公共T项{get;set;}
}
因此,您可以在程序中使用它,如下所示:

var columns = new IEnumerable<Column<string>>();
var columns=new IEnumerable();

查找泛型类型。为什么不使用所有类的父类
System.Object
。@ChristophKn这和
dynamic
就像使用火箭发射器杀死苍蝇一样。你会造成更多的伤害。正如已经提到的,泛型是一条路。你真的应该考虑一种不同的方法,看起来你的设计有一些弱点。事实上,我有这样的东西:列[0]=新字符串[]{“a”、“a”、“a”、“a”、“b”、“b”、“b”};我不希望它是静态的,我希望能够确定类型并在运行时添加元素