C#のプロパティを使ってみた。
class Person { private string name; private int age; public Person (string name, int age) { this.name = name; this.age = age; } public string GetName () { return name; } public int GetAge () { return age; } public void SetAge (int age) { this.age = age; } public override string ToString () { return string.Format ("[{0} : age {1}]", name, age); } }
というクラスをプロパティを使って書き換えてみました。
こんなかんじですかね。
class Person { public Person(string name, int age) { this.Name = name; this.Age = age; } public string Name { private set; get; } public int Age{ set; get; } public override string ToString () { return string.Format ("[{0} : age {1}]", Name, Age); } }
短い!
いいですね。これ。
ただ外からこれを使う時に,
person.GetName()
でなくて,
person.Name
とするのが,今は違和感を感じます。
考察?とか
プロパティは,
使う側から見るとインスタンス変数に見えて,
実装する側から見るとメソッドと同じように実装が出来る
だそうで。
実装が変わった時その影響範囲が広くなってしまうため,
publicなフィールド(インスタンス変数)でなく,
privateなフィールドで,それに対するアクセッサメソッドを定義するべき,
というのは,いろいろな本で言及されています。
プロパティーを使うと非常に短く,アクセッサーを実装できていいですね。
プロパティーの細かい実装も定義できるようで,以下のようにも書けるようです。
class Person { private string name; public Person(string name, int age) { this.name = name; this.Age = age; } public string Name { get{ return name; } } public int Age{ set; get; } public override string ToString () { return string.Format ("[{0} : age {1}]", Name, Age); } }
以上です。
また会えることを祈りつつ。