Effective C# 4.0:読んだだけだと要点を忘れてしまうので個人的なメモです。まずは chapte1 のイディオムから。
textBox1.DataBindings.Add("targetProperty",ObjectName,"BindProperty");
あるプロパティに空白文字をセットすることを許可しないという仕様に変更したいとき、プロパティを使っていなければ public メンバもしくはセッタを呼び出してる箇所を全て見つけ出し処理を書き加えなければならない。しかしプロパティを使っていれば set アクセサー内に記述を追加するだけですむ。
これも前述のものと同様に get/set アクセサーへの追記で変更が終わる。
空文字セット時の例外処理と同期アクセスのサポート
public class Hoge{ private object syncHandle = new Object(); private string name; public string Name { get { lock(syncHandle) return name; } set { if(string.IsNullOrEmpty(value)) { throw new ArgumentException("string is null or empty",Name); } lock(syncHandle); return value; } } }
多次元インデクサとかも定義できちゃうらしい(this[int x, int y]とか書けば OK)。けどちょっとダルそう。
//配列的に扱えるようにする実装 public int this[int index] { get{...} set{...} } //辞書的に扱えるようにする実装 public this[string foo] { get{...} set{...} }
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです