フィールドとプロパティの差

私が他人のC++/CLIのソースを見ているときに気になる事があります。

何故この人は、同じクラス内からメンバ変数を参照するときにプロパティを経由するんだろう、と。

MSDNにも書かれているように、プロパティへのアクセスは一般的に高価になります。


まずは定義からおさらいしましょう。以下、MSDNから抜粋します。

・フィールド

オブジェクトまたはクラスに関連付けられた変数を表すメンバ。

・プロパティ

.NET Framework において、バージョン管理、カプセル化などの機能や、get および set の各アクセサ メソッドを通じて追加ロジックを実行する機能を備えた、パブリック フィールドに似たクラス メンバ。

C++/CLIの構文的な違いでいうならば、フィールドはクラスのメンバ変数、プロパティはpropertyの構文で作られた変数です。

違いはただ一つ、後者はアクセス権や範囲チェックなどの検証ロジックが必要になるため、低速になります。全てをプロパティ経由にする理由など何もないわけです。

もちろん何かを狙ってやっているなら良いのですが、大抵は単なる二重チェックになってしまいます。配列の範囲チェックを含めると三重になっている人すらもいます。

貴方のソースコードも確認してはどうでしょうか?



[MSDN] .NET Framework 用語集

Leave a Reply

最初のコメントを頂けますか?

更新通知を受け取る »
avatar
wpDiscuz