c#中的类 - 创建一个包含类'的字符串。实例名称

时间:2015-01-31 19:49:34

标签: c# string class instance

我想在c#中创建一个包含内部字符串中实例名称的类。 例如,班级':':

Person steve = new Person();

并且该类看起来像这样:

class Person
{
    private string Name;
}

所以字符串'姓名'将包含:" steve"。

我该怎么做?这可能吗?

3 个答案:

答案 0 :(得分:3)

不,这是不可能的。

考虑一下:

Person steve = new Person();
Person john = steve;

现在Name会是什么?

变量名称不是实例名称。实例没有名称,但内存中的位置,以及多个变量名可能指向同一个实例。

答案 1 :(得分:3)

如果将实例创建为参数,会发生什么?或者如果它在数组中使用?或者如果它被重新分配给另一个变量? 这不是一个好主意(也不可能以你想要的方式)

在构造函数中使用string参数为名称赋值:

class Person
{
    private string Name { get; set; }

    public Person(string name)
    {
         Name = name;
    }
}

将实例创建为:

Person steve = new Person("Steve");

字符串“Steve”现在在创建时传递给类的构造函数。见Constructors (C# Programming Guide)

答案 2 :(得分:0)

您很可能正在寻找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"];

注释

  • 如所有其他答案中所述,变量/字段的名称与实例的值/属性没有直接关系。
  • 制作&#34;姓名&#34; private看起来有点奇怪 - 如果你想查看这个人的名字,你应该公开(或者更好地使其属性如我的样本所示)。如果您不希望其他代码访问&#34;名称&#34; - 您需要在构造函数中设置它。

也可以完全按照您的要求进行操作 - &#34;创建方法,其中存在具有给定名称的变量,其中包含对象的私有字段,而对象的私有字段之一的名称等于变量名称&#34 ;。您在运行时使用Reflection.Emit构造此类方法,并且可能需要在Reflection命名空间中使用其他API来更改私有字段的值...我也怀疑它是什么寻找。