構造体 (C# プログラミング ガイド)

構造体は、次のように struct キーワードで定義します。

public struct PostalAddress
{
    // Fields, properties, methods and events go here...
}

構造体は、構文上ではクラスとほとんど変わりませんが、次のようにクラスよりも制限されます。

  • 構造体宣言内では、const または static と宣言されているフィールド以外は初期化できません。

  • 構造体では、既定のコンストラクター (パラメーターなしのコンストラクター) やデストラクターを宣言できません。

  • 構造体は、代入時にコピーされます。 構造体を新しい変数に代入すると、すべてのデータがコピーされ、新しいコピーを変更しても、元のコピーのデータは変更されません。 この点は、Dictionary<string, myStruct> などの値の型のコレクションを使用する際に重要です。

  • 構造体は値型ですが、クラスは参照型です。

  • クラスとは異なり、構造体は new 演算子を使用せずにインスタンス化できます。

  • 構造体は、パラメーターのあるコンストラクターを宣言できます。

  • 構造体は、他の構造体やクラスから継承できず、基本クラスになれません。 すべての構造体が System.ValueType を直接継承し、System.ValueType は System.Object を継承します。

  • 構造体では、インターフェイスを実装できます。

  • 構造体は null 許容型として使用でき、null 値を割り当てることができます。

関連項目

詳細情報

参照

参照

クラスと構造体 (C# プログラミング ガイド)

クラス (C# プログラミング ガイド)

概念

C# プログラミング ガイド

構造体のデザイン