C# 如何在类c中使用对象名称#

C# 如何在类c中使用对象名称#,c#,class,object,instance,C#,Class,Object,Instance,在这种情况下,我想打印 m2k: 盐:2 技能: 有办法做到这一点吗? 以某种方式获取我们正在使用的对象的名称 namespace practice { class SmashPlayer { private int salt, skill; public SmashPlayer(int salt, int skill) { this.salt = salt; this.skill = skill; } public void pr

在这种情况下,我想打印 m2k: 盐:2 技能: 有办法做到这一点吗?
以某种方式获取我们正在使用的对象的名称

namespace practice
{
class SmashPlayer
{
    private int salt, skill;
    public SmashPlayer(int salt, int skill)
    {
        this.salt = salt;
        this.skill = skill;
    }
public void print()
    {
        Console.WriteLine("{0}'s\nsalt:{1}\nskill:{2}",Name of object,salt,skill);
    }

}
class Program
{

    public static void Main(string[] arg)
    {



        SmashPlayer m2k = new SmashPlayer(2,5);
        m2k.print();

    } 
  }
}

你不能那样做。您需要将字符串传递给构造函数

SmashPlayer m2k = new SmashPlayer (2, 5, "m2k");
当然,您需要向该构造函数添加新参数,并将其保存在实例字段中

为了避免重构问题,可以使用
nameof
操作符

SmashPlayer m2k = new SmashPlayer (2, 5, nameof (m2k));

你不能那样做。您需要将字符串传递给构造函数

SmashPlayer m2k = new SmashPlayer (2, 5, "m2k");
当然,您需要向该构造函数添加新参数,并将其保存在实例字段中

为了避免重构问题,可以使用
nameof
操作符

SmashPlayer m2k = new SmashPlayer (2, 5, nameof (m2k));
这真的不可能。 简单的例子:

SmashPlayer m2k = new SmashPlayer(2,5);
SmashPlayer m2k_again = m2k;
两个变量,但它是类的同一个实例,您应该写什么作为变量名?又是m2k还是m2k_

看看《启示录》的答案,寻找一个可能的解决办法。 这真的不可能。 简单的例子:

SmashPlayer m2k = new SmashPlayer(2,5);
SmashPlayer m2k_again = m2k;
两个变量,但它是类的同一个实例,您应该写什么作为变量名?又是m2k还是m2k_

看看《启示录》的答案,寻找一个可能的解决办法。

为您提供了一些选项,以实现您的要求。请注意,通常您不会对任何可以显示给用户的内容使用变量名-根据您的实际目标,有更传统的解决方案(从添加
name
property开始)。为您提供一些选项,以实现您的要求。请注意,通常您不会对任何可以显示给用户的内容使用变量名-根据您的实际目标,有更传统的解决方案(从添加
name
property开始)。什么是重构问题?@SuperMinefudge:例如,当您将
m2k
变量重命名为
newName
时,您将忘记更新传递给构造函数的“m2k”字符串。但是如果你使用
nameof
操作符,重构工具会意识到这一点,并将
nameof(m2k)
更改为
nameof(newName)
。重构问题是什么?@SuperMinefudge:例如,当你将
m2k
变量重命名为
newName
时,你会忘记更新“m2k”传递给构造函数的字符串。但是如果您使用
nameof
operator,重构工具将意识到这一点,并将
nameof(m2k)
更改为
nameof(newName)