C#,动态对象名称?

时间:2011-01-11 14:37:37

标签: c#

假设我有一个对象列表

List<dogClass> DogList = new List<dogClass>();

我想自动添加对象,比如

        dogClass myDog1 = new dogClass();
        DogList.Add(myDog1);

那么myDog2,myDog3等等任何想法怎么做?

谢谢!

8 个答案:

答案 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());
  }