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!” 我怎样才能做到这一点?
请改用属性或字段:
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();
}
开发人员使用变量的名称。它用于交流,揭示此变量存在的原因、作用以及使用方式。业务逻辑应该与变量名完全无关。
在这种情况下 : 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" };