プログラムのコードブロックとして独自のデータ型を定義するには、クラスと構造体のどちらにでもすることができます。
しかし、構造体のインスタンスは常に値で渡され、クラスのインスタンスは常に参照で渡されます。つまり、異なるタスクに適しているということです。プロジェクトに必要となるデータ構造と機能は、各データ構造がクラスとして、あるいは構造体として定義されるべきかで決まります。
一般的な指針として、次の条件のうち 1 つ以上に当てはまるときには、構造体にします。
- 構造体の主な目的が、比較的単純なデータ値を持つことである。
- 構造体のインスタンスを代入する、または渡すときに、参照よりも値がコピーされることを期待するのが妥当である。
- 構造体に保持されたプロパティが値型で、参照よりもコピーされることが期待される。
- 構造体が、別の型からプロパティや振る舞いを継承する必要が無い。
構造体にふさわしい例は次のようになります。
- 幾何学的図形のサイズで、
width
プロパティとheight
プロパティがあり、共にDouble
型。 - 一連の範囲を参照する手段で、
start
プロパティとlength
プロパティがあり、共にInt
型。 - 3D 座標系の点で、
x
,y
,z
プロパティがあり、すべて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.