2011-01-11 19 views
1

は、任意のアイデアはどのようにそれを行うためになど、その後C#、動的オブジェクト名?

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

myDog2、myDog3のように、私はオブジェクト

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

のリストを持っていると私は自動的にオブジェクトを追加するとしますか?

ありがとうございます!

+2

クエストでもっと明確にすることはできますか?に?あなたが何を求めているのか分かりません...リストに多くのオブジェクトを一度に追加できるようにしたいですか?例えば。リスト dogList =新しいリスト {dog1、dog2、dog3}; ? – raRaRa

+1

あなたはちょうどしましたか? –

答えて

5

DogList.Add(new dogClass()); 

そうでなければ、そのような変数に動的に名前を付けることはできません。しかし、dictionaryを使用して、文字列 "myDog1"などを値に関連付けることができます。

+0

基本的に、さまざまなフィールド名を取得して.Textプロパティを確認するフォームがある場合は、手動ですべてのフィールド名をコードに入力する必要があります。ループを使用して魔法のようにすべてのオブジェクトを見つけることはできません(もう少し複雑なコーディングなしで)。 – Dexter

+0

こんにちは、私はここに質問があります。 dogClassに関連付けられている関数がある場合は、どのように呼び出すか?私は新しいキーワードでそれを作成しているときにオブジェクト名を知らないのですか? –

1

なぜあなたはそれをしたいですか?

犬を追加するためのメソッドを作成します。

void AddDog() 
{ 
    DogList.Add(new dogClass()); 
} 

を、インデックスしてアクセス:あなたはあなたはこれを試みることができるの名前を持つようににそれらを必要としない場合

dogClass GetDog(Int32 index) 
{ 
    return DogList[index]; 
} 
+0

DogListスコープは 'AddDog'の後に失われます。 DogListがクラスまたはローカル変数のメンバーであれば、実装に依存します。 – JonH

1
for (int i = 0; i < 10; i++) 
{ 
    dogClass myDog = new dogClass(); 
    DogList.Add(myDog); 
} 
+0

面白いことに、ほぼ同じコードを投稿しました! – JonH

+0

うん、そう、面白い –

2

ちょうどあなたがこの探しているループ

for(int i = 0; i<10; i++) 
{ 
    Doglist.add(new dogClass("puppy" + i.ToString())); 
} 
2

を使うのか?

for(int i =0; i<100;i++){ 
    DogList.Add(new dogClass()); 
} 
2

あなたは最初の変数に格納する必要はありません。

DogList.Add(new DogClass()); 

はokです。

あなたが複数追加する場合:

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

イムわかりません。

for(int i = 0; i < 10; i++) 
    { 
    dogList.Add(new DogClass()); 
    } 
2

オブジェクトの名前(つまり識別子)を動的に作成する方法はありません。

上記のすべてのソリューションは、ダイナミックオブジェクトを作成しましたが、「ダイナミックNAME」を持つダイナミックオブジェクトは作成していないという意味で正しいです。

あなたの要件に合ったラウンドアバウト方法は、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のそれぞれにアクセスする.... Uは> DogList["myDog1"]又はDogList["myDog5"]をuse-ことができる......

またはur 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#が私たちにこのような何かの関数(またはプロパティ)を与えていた場合: myName.GetIdentifierName()

は "がmyName" を返した場合、今

int myName = 0; 

を... .. uhhhh ..今私はこれ以上考えたくない.....私はプロパティを設定するときに何が起こるはずですか:

関連する問題