自動プロパティがあり、そのクラス内からアクセスしようとすると、直接アクセスするのではなく、関数を使用してクラスのメンバーにアクセスするため、オーバーヘッドのように見えます。
これが正しい場合、そのような場合は自動プロパティを使用しないことを検討する必要がありますか?
自動プロパティがあり、そのクラス内からアクセスしようとすると、直接アクセスするのではなく、関数を使用してクラスのメンバーにアクセスするため、オーバーヘッドのように見えます。
これが正しい場合、そのような場合は自動プロパティを使用しないことを検討する必要がありますか?
理論上のオーバーヘッドを測定し、それが重要であることがわかりましたか? これは、パフォーマンスに基づいた意思決定を行うための鍵です。
この場合、JIT が自動的に実装されたプロパティをインライン化し、パフォーマンスのオーバーヘッドを取り除くことを完全に期待しています。float
( /double
がそうでないケースを見たのを覚えているようですが、それは少し前のことでした - それでもオーバーヘッドはかなり小さかったです。)
この点では、自動プロパティは通常のプロパティと変わりません。
心配しないでください。とにかく、JITter は通常、プロパティ メソッドをインライン化します。
あなたはその通りです。ただし、一部のメカニズムにはプロパティが必要です。たとえば、XML シリアライザーはパブリック メンバーをシリアル化しません...
もう 1 つはカプセル化です。クラスの各プロパティの最終的な宛先が事前にわからないため、最初にプロパティとして作成すると、後で set/get 実装に進むことができます。
オブジェクト指向の原則に従っている場合、内部メンバーへの直接アクセスを許可することにより、カプセル化の原則に違反します。プロパティ メカニズム (ゲッターおよびセッター メソッド) は、これらのメンバーへの適切なアクセスを提供し、内部メンバーを直接アクセスから保護します。