在C#中检查方法调用者的字段

时间:2013-10-02 16:23:12

标签: c# methods field

class Dog
{
 public void Bark()
  {
    Console.WriteLine("<Name_Of_Dog> just barked!")
  }
}

static void Main()
{
  Dog Spike=new Dog();
  Dog Mike=new Dog();
  Spike.Bark();
}

现在我希望控制台输出为:&#34; Spike只是咆哮!&#34; 我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

改为使用属性或字段:

class Dog
{
   string Name
   public void Bark()
   {
     Console.WriteLine("{0} just barked!", Name)
   }
   public Dog(string name)
   {
     this.Name=name;
   }
}

static void Main()
{
  Dog Spike=new Dog("Spike");
  Dog Mike=new Dog("Mike");
  Spike.Bark();
}

答案 1 :(得分:0)

开发人员使用变量的名称。它用于通信,揭示该变量存在的原因,它的作用以及如何使用它。业务逻辑应该与变量名完全无关。

在这种情况下:object potato = new Object(),这不是因为我将我的对象马铃薯命名为自动变为一个。在您的示例中,使用这样的狗名称仅向开发人员指示此Dog实例名为Spike,而不是它代表的实际对象是名为Spike的狗。

您需要的是通过propertiesfields定义对象的特征。 根据您的情况,您需要一个名为Name的字段。为什么不是财产?因为物体就像间谍,他们想要将一切都隐藏在整个世界之外。由于您未在应用程序的其他位置使用该名称,因此请在类级别限制范围:

class Dog
{
    private readonly string name;

    public Dog(string name)
    {
        this.name = name;
    }

    public void Bark()
    {
        Console.WriteLine("{0} just barked!", name);
    }
}

主要:

Dog Spike = new Dog("Spike");

使用属性,它看起来像这样:

class Dog
{
    public string Name { get; set; }

    public void Bark()
    {
        Console.WriteLine("{0} just barked!", Name);
    }
}

主要成为:

Dog Spike = new Dog { Name = "Spike" };