如何动态创建List <myclass>的对象?

时间:2016-11-01 19:15:14

标签: c#

如何动态创建MyClass的对象?我有嵌套列表,我将从我的DataTable获得嵌套列表的数量,所以我不知道我需要多少个对象。 我在循环中工作。

我可以通过示例获得一些帮助吗?

for (int i = 0; i < table.Rows.Count; i++)
{
List<MyClass> names[i] = new List<Checklists>();
}

所以我会得到:

names0
names1
names2
......n

然后我会添加像

这样的元素
name0.Add(new MyClass(...))
name1.Add(new MyClass(...))
name2.Add(new MyClass(...))

.........

我在StackOverFlow上读了几个问题,但是在我的情况下它们没有帮助,因为它们不是关于List的。像Creating objects dynamically in loop

一样

1 个答案:

答案 0 :(得分:1)

您可以创建一个类,例如LISTOFNAMES可以将公共成员名称[]作为

的数组
          List <MyClass> 

类型。数组的大小可以作为传递 LISTOFNAMES(..)的构造函数和代码的整数变量 您可以将每个名称[i]实例化为单个列表。 以下示例代码显示了所描述的方式

     // Add a public class LISTOFNAMES

       public class LISTOFNAMES
       {
        public List<MyClass>[] names;
        public LISTOFNAMES(int arsize)
        {
             this.names=new List<MyClass>[arsize];
        }
       }

然后在你的代码中你必须首先实例化一个LISTOFNAMES类型的对象(假设你已经获得了数组名[index]所需的元素数)然后你必须单独地将每个名称[index]实例化为

       List <MyClass> 

类型。 因此,您可以添加以下行

       //in your code
       //suppose you have got a value for the number of names[] items say
      // to be named nn (of type int), then you add the following

       LISTOFNAMES lista=new LISTOFNAMES(nn);
       // Then you add..
       for(int i=0;i<nn;i++)
       {
          lista.names[i]=new List<MyClass>();
       }
       //Now you can use individually the lista.names[index] objects,
      // for example like
       lista.names[0].Add(new MyClass(...));
       lista.names[1].Add(new MyClass(...));

       etc

或者,您可以简单地实例化类型为

的数组对象
      List<MyClass>[]

然后单独实例化每个项目。例如,获取了数组大小 “ar_size”是一个int变量,例如

                 int ar_size=table.Rows.Count;

您可以使用以下

          List<MyClass>[] names=new List<MyClass>[ar_size];
          for(int i=0;i<ar_size;i++)
             {
                names[i]=new List<MyClass>();
             }

然后填写每个对象名称[index],如下所示

            names[0].Add(new MyClass(...));
            names[1].Add(new MyClass(...));

       etc.

希望这些帮助。