假设我有一个对象列表
List<dogClass> DogList = new List<dogClass>();
我想自动添加对象,比如
dogClass myDog1 = new dogClass();
DogList.Add(myDog1);
那么myDog2,myDog3等等任何想法怎么做?
谢谢!
答案 0 :(得分:5)
如果你不需要他们有一个名字,你可以尝试这个。
DogList.Add(new dogClass());
否则,您无法动态命名这样的变量。但是,您可以使用dictionary将字符串“myDog1”等与值相关联。
答案 1 :(得分:3)
C#中无法动态创建对象的名称(或其他标识符)。
上面给出的所有解决方案都是正确的,他们为您创建了动态对象,但没有为动态对象创建动态对象&#34;。
可能符合您要求的一种迂回方式是:使用keyValue对。
例如:
Dictionary<string, dogClass> DogList = new Dictionary<string, dogClass>(3);
for(int i=1; i<=10; i++)
{
DogList.Add("myDog"+i,new dogClass());
}
现在从DogList访问每个dogClass ....你可以使用 - &gt;
DogList["myDog1"]
或DogList["myDog5"]
......
或者如果你的dogClass有一个名为Name的属性。名称可以用作密钥。
List<dogClass> DogList = new List<dogClass>(3);
for(int i=1; i<=10; i++)
{
DogList.Add(new dogClass(Name:"myDog"+i));
}
GetDogWithName("myDog1"); //this method just loops through the List and returns the class that has the Name property set to myDog1
在这里,对于普通人或外行人......你已经创建了具有唯一名称的对象。但对你和我来说......它们不是对象的名字。
一个更有趣的想法...... 如果C#给了我们一个像这样的函数(或属性):
int myName = 0;
现在如果
myName.GetIdentifierName()
返回&#34; myName&#34; .....呃嗯..现在我不想超越这个......当我把财产设置为时会发生什么:
myName.SetIdentifierName() = "yourName"; //what happens to myName????
答案 2 :(得分:2)
只需使用循环
for(int i = 0; i<10; i++)
{
Doglist.add(new dogClass("puppy" + i.ToString()));
}
答案 3 :(得分:2)
你在寻找这个吗?
for(int i =0; i<100;i++){
DogList.Add(new dogClass());
}
答案 4 :(得分:2)
您不必先将它们存储在变量中:
DogList.Add(new DogClass());
没问题。
如果您想添加多个:
DogList.Add(new DogClass());
DogList.Add(new DogClass());
DogList.Add(new DogClass());
或者如果您想要这种灵活性:
for(int i = 0; i < NR_OF_OBJECTS_TO_ADD; i++) {
DogList.Add(new DogClass());
}
答案 5 :(得分:1)
你为什么要这样做?
创建添加狗的方法:
void AddDog()
{
DogList.Add(new dogClass());
}
通过索引访问它们:
dogClass GetDog(Int32 index)
{
return DogList[index];
}
答案 6 :(得分:1)
for (int i = 0; i < 10; i++)
{
dogClass myDog = new dogClass();
DogList.Add(myDog);
}
答案 7 :(得分:0)
我不确定你的意图是什么,但也许你想要循环:
for(int i = 0; i < 10; i++)
{
dogList.Add(new DogClass());
}