0

如何生成生成的对象名称?例如:

ObjectEx "name" = new ObjectEx();

编辑:

该对象将由用户输入命名。代码将是:

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

编辑2:

我有一个处理所有s的Dictionaryfor ObjectEx( )。PersonObjectEx

Person是真正的类名,抱歉制作示例对象ObjectEx

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

4 回答 4

6

对象没有名字——变量有,而且它们总是在编译时确定的。

如果您想要从字符串到对象的映射,只需使用Dictionary<string, ObjectEx>- 然后使用Random. (在 Stack Overflow 上有很多生成随机字符串的例子。)

如果您只想要一个对象集合并且您使用“随机名称”作为表达方式,请使用List<ObjectEx>- 在这种情况下您根本不需要名称。

如果您需要其他内容,请更具体。

于 2013-07-21T08:18:44.763 回答
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 回答
1

这是不可能的,但是使用Dictionary怎么样。您可以使用字符串值添加和获取您存储的对象。

// 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 回答
0

您可以使用字典来存储对象,其中 Key 是对象名称

于 2013-07-21T08:18:59.747 回答