次の方法で共有


クラスまたは構造体の選択

更新 : 2007 年 11 月

クラスは参照型ですが、構造体は値型です。参照型はヒープ上に割り当てられ、メモリ管理はガベージ コレクタによって処理されます。値型はスタックまたはインライン上に割り当てられ、スコープの外に出たときに解放されます。一般に、割り当てや解放は値型の方が簡単です。ただし、大量のボックス化とボックス化解除が必要なシナリオで使用すると、参照型と比べてパフォーマンスが低くなります。詳細については、「ボックス化とボックス化解除 (C# プログラミング ガイド)」を参照してください。

値型と参照型の詳細については、「共通型システムの概要」を参照してください。

型が次に挙げるすべての特性を持たない場合、構造体は定義しません。

  • プリミティブ型 (整数、倍精度浮動小数点数など) に似た単一の値を論理的に表す。

  • インスタンスのサイズが 16 バイト未満である。

  • 変更できない。

  • 頻繁にボックス化する必要がない。

これらの条件を 1 つ以上満たしていない場合は、構造体ではなく、参照型を作成します。このガイドラインに従わない場合、パフォーマンスが低下する可能性があります。

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

デザイン ガイドラインの詳細については、2005 年に Addison-Wesley から出版されている Krzysztof Cwalina、Brad Abrams 共著の『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』を参照してください。

参照

その他の技術情報

型のデザインのガイドライン

クラス ライブラリ開発のデザイン ガイドライン