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!」どうやってやるの?
変数の名前は、開発者によって使用されます。この変数が存在する理由、その機能、およびその使用方法を明らかにするために通信するために使用されます。ビジネス ロジックは、変数名とはまったく関係ありません。
この状況では : object potato = new Object()
、それが自動的に 1 つになるのは、オブジェクトにポテトという名前を付けたからではありません。あなたの例では、このような犬の名前を使用することは、この Dog インスタンスが Spike という名前であることを開発者に示すだけであり、それが表す実際のオブジェクトが Spike という名前の犬であることを示すものではありません。
必要なのは、properties
またはを介してオブジェクトの特性を定義することfields
です。あなたの状況では、名前というフィールドが必要です。なぜプロパティではないのですか?オブジェクトはスパイのようなものであるため、全世界からすべてを隠しておきたいと考えています。アプリケーションの他の場所で名前を使用していないため、クラス レベルでスコープを制限します。
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" };
代わりにプロパティまたはフィールドを使用します。
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();
}