短い答え:
いいえそうではありません。
長い答え:
いいえそうではありません; しかし...
プロパティ自体は単なる通常のメソッドですが、フィールドのような構文に身を包んでいます。メソッドはメモリ内の1つの場所にのみ存在するため(そのタイプのすべてのオブジェクトで同じであるため)、各インスタンスのサイズには影響しません。新しい仮想メソッドを追加するとvtableのサイズが大きくなるため、仮想メソッド(仮想プロパティを含む)はこれを少し混乱させることに注意してください。ただし、vtableはクラスごとに1回しか存在しません。しかし、構造体には.NETにvtablesがないため(C ++ではありますが、構造体とクラスは意味的に同一であるため)、これは重要ではありません。
「プロパティ」は構造体タイプのメモリサイズを増やすことができますが、それを書いた人が「自動プロパティ」に慣れていない場合に限ります。C#3.0では、自動的に実装されるプロパティ(または略して「自動プロパティ」)が導入されました。このプロパティでは、コンパイラによって、簡単なゲッター/セッタープロパティ用の非表示フィールドが作成されます。構文はpublic PropertyName { get; set; }
です。
union
トピックに戻る:カスタムStructLayout( C#でsを作成する方法)を使用するときに重複するフィールドがない限り、インスタンスメンバーフィールドのみが構造体のサイズに影響します。静的メンバーはインスタンスのサイズに影響を与えないことに注意してください。ただし、VBでは、Static
キーワードをローカル変数に使用すると、インスタンスのサイズに影響を与える可能性があります(同じ単語「静的」にもかかわらず、Static
VBでマークされたローカル変数は静的クラスにありません)州)。
最後に、.NETには値に関連するオーバーヘッドがありますが、これらは.NETの「管理」の性質に固有のものですが、相互運用シナリオで使用される構造体には適用されません(つまり、ポインター演算とsizeof
すべてが同じように機能します)。 C / C ++の下で)。