我想在c#中创建一个类,该类包含内部字符串中的实例名称。 例如,类 '人':c#中的类 - 创建一个包含类的实例名称的字符串
Person steve = new Person();
和班会看起来像:
class Person
{
private string Name;
}
所以字符串 '名称' 将包含: “史蒂夫”。
我该怎么做?那可能吗?
我想在c#中创建一个类,该类包含内部字符串中的实例名称。 例如,类 '人':c#中的类 - 创建一个包含类的实例名称的字符串
Person steve = new Person();
和班会看起来像:
class Person
{
private string Name;
}
所以字符串 '名称' 将包含: “史蒂夫”。
我该怎么做?那可能吗?
不,这是不可能的。
考虑一下:
Person steve = new Person();
Person john = steve;
现在所说Name
是什么?
A 变量名称不是实例名称。实例没有名称,但是内存中的位置以及多个变量名称可能指向同一个实例。
如果将实例创建为参数会发生什么?或者如果它在数组中使用?或者如果它被重新分配给另一个变量? 这不是一个好主意(也不可能你想要的方式)
使用string
参数的构造函数,赋值的名称:
class Person
{
private string Name { get; set; }
public Person(string name)
{
Name = name;
}
}
并创建实例作为:
Person steve = new Person("Steve");
字符串“Steve”现在在创建时传递给类的构造函数。见Constructors (C# Programming Guide)
这是很可能你正在寻找Dictionary<string, Person>
到的人名映射到一个人的实例:
class Person
{
public string Name {get;set;}
}
var people = new Dictionary<string, Person>();
people.Add("Steve", new Person { Name = "Steve"});
var theSteve = people["Steve"];
注
private
看起来有点奇怪 - 如果您想查看该人的姓名是什么,您应该将其公开(或更好地使其属性如示例中所示)。如果你不想让其他代码访问“名称” - 你需要在构造函数中设置它。也可以做你问到底是什么 - “创建方法,其中有一个与持有的实例,对象和对象的私有字段的一个有名字等于变量名指定名称变量”。你会使用Reflection.Emit
在运行时构造这样的方法,并且可能需要使用Reflection
命名空间中的其他API来更改专用字段的值......另外我怀疑它是您正在寻找的。
实例通常没有名称。你想达到什么目的? – 2015-01-31 19:51:32
你为什么想这样做?这似乎是一个可怕的想法。 – 2015-01-31 19:51:39
如果你有'Person steve = new Person();人乔=史蒂夫;'? – 2015-01-31 19:52:22