如何创建生成的对象名称?

时间:2013-07-21 08:16:15

标签: c# object

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

ObjectEx "name" = new ObjectEx();

修改

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

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

编辑2:

DictionaryObjectExPerson处理所有ObjectEx s。

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

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

4 个答案:

答案 0 :(得分:6)

对象没有名称 - 变量有,并且它们总是在编译时确定。

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

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

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

答案 1 :(得分: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());

答案 2 :(得分:1)

这是不可能的,但如何使用Dictionary。您可以使用字符串值Add and Get hold of a Object。

// 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 ); 
}

答案 3 :(得分:0)

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