包含通用列表的通用列表

时间:2017-03-21 13:29:11

标签: c# list generics

我想知道是否有一种方法可以保存一个可以保存通用列表的通用列表。

我的问题是我有一个列表可以包含列表A或列表B或列表C.

我想出了如何使用数据类型执行此操作,但我希望此列表能够保存我创建的类。

例如:

List<T> listA = new List<T>();

其中T是ObjectX

listA.Add(new list<Y> { new List<U>() { new List<T>() } } );

Y是ObjectY<br>

其中U是ObjectU

编辑: 让我把它放到上下文中。

我有一个名为Suites的对象列表 每个Suite都可以有一个CaseObjects列表 OR 一个CaseHolderObjects列表。 每个CaseHolder都可以包含CaseObjects列表 每个Case都可以包含一个ActionObjects列表

4 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace TestList
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Use this syntax for a list of list of classes
            List<List<Test>> test = new List<List<Test>>();
        }
    }
    //This class is just for example.
    class Test
    {
        //Your class code here
    }
}

答案 1 :(得分:0)

这就是你想要的,一个包含任何其他类型列表的列表^^

class Program
{
    static void Main(string[] args)
    {
        Person p1 = new Person(1, "Mario");
        Person p2 = new Person(2, "Franco");
        Dog d1 = new Dog(1, "Fuffy");
        Dog d2 = new Dog(2, "Chop");
        List<Person> listP = new List<Person>();
        listP.Add(p1);
        listP.Add(p2);
        List<Dog> listD = new List<Dog>();
        listD.Add(d1);
        listD.Add(d2);
        List<Object> listO = new List<Object>();
        listO.Add(listP);
        listO.Add(listD);
    }

    public class Person
    {
        public Person(int id, string name)
        {
            this.id = id;
            this.name = name;
        }

        public int id { get; set; }
        public string name { get; set; }
    }

    public class Dog
    {
        public Dog(int id, string name)
        {
            this.id = id;
            this.name = name;
        }

        public int id { get; set; }
        public string name { get; set; }
    }

}

答案 2 :(得分:0)

我解决了这个问题。有问题的类我让它们实现了一个空接口。然后我创建了一个属性。

List<List<Interfaces.IMetaData>> myList = new List<List<Interfaces.IMetaData>>();
            myList.Add(new List<Interfaces.IMetaData>() { new SuiteObject() { } });
            myList.Add(new List<Interfaces.IMetaData>() { new CaseHolderObject() { } });
            myList.Add(new List<Interfaces.IMetaData>() { new CaseObject() { } });
            myList.Add(new List<Interfaces.IMetaData>() { new ActionObject() { } });

答案 3 :(得分:-1)

如果要在其中存储不同的类,则不需要泛型集合。尝试使用ArrayList(System.Collections命名空间)。你可以添加任何对象(性能的cource成本); 例如:

ArrayList listA = new ArrayList() { 1, true, "string" };
ArrayList ListB = new ArrayList() { 2, false };
ArrayList ListC = new ArrayList() { 3, "string3" };

ListB.Add(ListC);
listA.Add(ListB);