如何动态创建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
一样答案 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.
希望这些帮助。