ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0584デフォルトの名無しさん
2016/01/09(土) 22:32:08.15ID:N/cvH//+class Date
{
public int Month { get; private set; }
public int Day { get; private set; }
public void SetDate(int month, int day) { Month = month; Day = day; }
}
class Person
{
public Date Birthday { get; private set; }
public Person() { Birthday = new Date(); Birthday.SetDate(1, 9); }
}
Personクラスでは、Birthdayは外部から変更されたくなくて、参照だけを許可したいとします(※)。
このため、Birthdayのsetプロパティをprivateにしています。
しかし、Birthdayのgetプロパティが内部データへの参照を返すため、クラスを利用する側が
Person man = new Person();
man.Birthday.SetDate(12, 31);
とすれば、Birthdayを変更できてしまいます。
このような場合、(※)のような制約をつけたければ、どう書くのが普通なのでしょうか?
Birthdayのgetプロパティで、新しいDateのインスタンスを作って、コピーを返すべきなのでしょうか?
C++だと、
const Date& Birthday() { 略 }
と、Get関数の戻り値に const をつければ、内容を変更できない参照を返せるのですが…。
■ このスレッドは過去ログ倉庫に格納されています