ふらっとC#,C♯,C#(初心者用) Part87at TECHふらっとC#,C♯,C#(初心者用) Part87 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト110:デフォルトの名無しさん 12/03/07 01:04:48.27 (´・ω・`) 111:デフォルトの名無しさん 12/03/07 01:08:14.05 class Person { public string Name { get; set; } 中略 } class Hoge { private Person p; public Person Person { get { return p; } } // 以降コンストラクタなど省略 } こんなかんじでHogeに、メンバとして持ってるPersonを返すプロパティがあるとします。 このプロパティはHogeの使用側が情報を読み取るためだけに使いたいのですが、 Hoge h = new Hoge(); h.Person.Name = "Unko"; とやってしまえば外から容易に書き換えられてしまいます。 読み取り専用にするにはどうしたらいいでしょうか。 C++ならconst参照を返すという場面なのですが。 112:デフォルトの名無しさん 12/03/07 01:19:39.01 面倒くさい手を加えずに読み取り専用にする方法はない 面倒くさい方法は継承でやる 113:デフォルトの名無しさん 12/03/07 01:20:11.73 1.Personもイミュータブルにする 2.コピーして返す(防御的コピー) 3.読み取り専用のインターフェイスを使う 4.構造体にする 5.出力引数(GetPerson(outPerson)) いろいろあるけどできれば1か2 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch