プログラムのコードブロックとして独自のデータ型を定義するには、クラスと構造体のどちらにでもすることができます。

しかし、構造体のインスタンスは常に値で渡され、クラスのインスタンスは常に参照で渡されます。つまり、異なるタスクに適しているということです。プロジェクトに必要となるデータ構造と機能は、各データ構造がクラスとして、あるいは構造体として定義されるべきかで決まります。

一般的な指針として、次の条件のうち 1 つ以上に当てはまるときには、構造体にします。

  • 構造体の主な目的が、比較的単純なデータ値を持つことである。
  • 構造体のインスタンスを代入する、または渡すときに、参照よりも値がコピーされることを期待するのが妥当である。
  • 構造体に保持されたプロパティが値型で、参照よりもコピーされることが期待される。
  • 構造体が、別の型からプロパティや振る舞いを継承する必要が無い。

構造体にふさわしい例は次のようになります。

  • 幾何学的図形のサイズで、width プロパティと height プロパティがあり、共に Double 型。
  • 一連の範囲を参照する手段で、start プロパティと length プロパティがあり、共に Int 型。
  • 3D 座標系の点で、xyz プロパティがあり、すべて Double 型。

他のケースすべてでクラスを定義し、参照で管理されて渡されるクラスのインスタンスを生成します。実際のところ、ほとんどの独自のデータ構造は、構造体ではなくクラスになります。


Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.