automatic property って必要?
Automatic property は、結構話題を呼んでいるようで、いたるところで意見を見かけます。ぱっと検索しただけで id:dotnetmemo:20061115:1163601672 や id:akiramei:20070311:p1、Automatic Properties(C#3) などです。
Automatic property は実装クラスで次のような構文で単純なプロパティの生成を助けるものです。
public int AutoProperty { get; set; }
Automatic property は、かならず get および set が存在しなくてはなりません。Automatic property を用いる利点は、
- 記述量が少ない
- 誤ってフィールドを直接更新してしまうことがない
といったところなのでしょう。interface におけるプロパティの宣言と記述方法がかなり似ていますが、コンテキストが違えば意味が異なる構文というのは珍しいものではないので、それが問題視されることはマズないと思われます。
個人的に、フィールドを隠蔽する機能は非常に有用だと思いますが、希望的には automatic field であってほしかった、構文的には
public int PropertyWithAutomaticField { get { return valuefield; } set { valuefield = value; } }
みたいなかんじで、C# のプロパティ定義文では value というコンテキストセンシブキーワードが存在するので、そこに valuefield というコンテキストセンシティブキーワードを追加する。このキーワードが含まれたプロパティでは、対応するプロパティと同じ型のプライベートなフィールドに自動的に展開される、というところ。この方式であれば記述量には大差がないものの、
- automatic property と同じ実装にする場合、code snip で十分対応できる
- 単純な参照および代入以外の実装を追加することができる
- バックストアフィールドを隠蔽するという効果は失われない
という特徴があります。どないでしょうか?