0

生成されたオブジェクト名を作成するにはどうすればよいですか? 例えば:

ObjectEx "name" = new ObjectEx();

編集:

オブジェクトは、ユーザー入力によって名前が付けられます。コードは次のようになります。

Console.Write("Input new user's name: ");
string newUsersName = Console.ReadLine();
(Create ObjectEx)

編集2:

すべてを処理するDictionaryfor ObjectEx( Person) がありますObjectEx

Personは実際のクラス名です。例のオブジェクトを作成して申し訳ありませんObjectEx

public static List<Person> persons = new List<Person>();
4

4 に答える 4

6

オブジェクトには名前がなく、変数には名前があり、常にコンパイル時に決定されます。

文字列からオブジェクトへのマップが必要な場合は、Dictionary<string, ObjectEx>- を使用してから、 を使用してランダムな文字列を指定しRandomます。(スタック オーバーフローには、ランダムな文字列を生成する例がたくさんあります。)

オブジェクトのコレクションだけが必要で、それを表現する方法として「ランダムな名前」を使用List<ObjectEx>していた場合は、 - を使用してください。その場合、名前はまったく必要ありません。

他に何か必要な場合は、より具体的にお願いします。

于 2013-07-21T08:18:44.763 に答える
1

それは不可能ですが、Dictionaryを使用するのはどうですか。格納したオブジェクトの文字列値 Add および Get hold を使用できます。

// somewhere near the start in your code initialize the dictionary 
var dict = new Dictionary<string, Person>();

// later on you can dynamically add an Object to the Dictionary
// newUsersName is the so called Index
string newUsersName = Console.ReadLine();
dict.Add(newUsersName, new Person());

// if you need to get hold of that object again use the Index
// myObj is a Person type
var myObj = dict[newUsersName];
// assume Person has an Age property 
myObj.Age = 20;


// show all Persons now in the dictionary
foreach(var username in dict.Keys)
{
    Console.WriteLine(username);
    var pers = dict[username];
    Console.WriteLine("{0} is {1} years old", username, pers.Age ); 
}
于 2013-07-21T08:20:04.790 に答える
1

そこにオブジェクトを使用arrayして保存できます。

ObjectEx []arrObjectEx  = new ObjectEx[10];
arrObjectEx[0]   = new ObjectEx();

list<T>ランダムな要素の数が不明な場合は、配列の代わりに (ジェネリック リスト)を使用します。

List<ObjectEx> lstObjectEx = new List<ObjectEx>();
lstObjectEx.Add(new ObjectEx());

ランダムに生成されたオブジェクトに一意にアクセスする必要がある場合は、Dictionaryを使用できます。例えば

Dictionary<int, ObjectEx> dicObjectEx = new Dictionary<int, ObjectEx>();
dicObjectEx.Add(someUniqueNumber, new ObjectEx());
于 2013-07-21T08:18:09.340 に答える
0

キーがオブジェクト名であるオブジェクトを格納するために辞書を使用できます

于 2013-07-21T08:18:59.747 に答える