0
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();
}

现在我希望控制台输出为:“Spike just barked!” 我怎样才能做到这一点?

4

2 回答 2

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();
}
于 2013-10-02T16:26:30.157 回答
0

开发人员使用变量的名称。它用于交流,揭示此变量存在的原因、作用以及使用方式。业务逻辑应该与变量名完全无关。

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

您需要的是通过properties或定义对象的特征fields。对于您的情况,您需要一个名为 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" };
于 2013-10-02T16:41:01.563 回答