フィールド (C# プログラミング ガイド)
このトピックでは、フィールドについて説明します。フィールドとは、クラスまたは構造体に含まれるオブジェクトや値のことです。フィールドを使用すると、クラスおよび構造体でデータをカプセル化できます。
簡略にするために、以下の例では public のフィールドを使用しますが、この方法を実際に使用することはお勧めしません。フィールドは通常、private にしてください。外部クラスによるフィールドへのアクセスは、メソッド、プロパティ、またはインデクサを使用した間接的なアクセスにする必要があります。詳細については、「メソッド (C# プログラミング ガイド)」、「プロパティ (C# プログラミング ガイド)」、および「インデクサ (C# プログラミング ガイド)」を参照してください。
フィールド
フィールドは、クラスのデザインを実現する上で必要なデータを格納します。たとえば、暦の日付を表すクラスには、月、日、年を表す 3 つの整数フィールドが存在します。フィールドは、フィールドのアクセス レベル、フィールドの型、フィールドの名前を順に指定して、クラス ブロック内で宣言します。次に例を示します。
public class CalendarDate
{
public int month;
public int day;
public int year;
}
オブジェクト内のフィールドにアクセスするには、objectname.fieldname
のように、オブジェクト名の後にピリオドを追加し、その後にフィールド名を続けます。次に例を示します。
CalendarDate birthday = new CalendarDate();
birthday.month = 7;
フィールドには、フィールドの宣言時に代入演算子を使用して初期値を設定できます。たとえば、month
フィールドに自動的に 7
を代入するには、次のように month
を宣言します。
public class CalendarDateWithInitialization
{
public int month = 7;
//...
}
フィールドは、オブジェクト インスタンスのコンストラクタが呼び出される直前に初期化されるので、コンストラクタがフィールドの値を代入すると、フィールドの宣言中に指定された値はすべて上書きされます。詳細については、「コンストラクタの使用 (C# プログラミング ガイド)」を参照してください。
メモ : |
---|
フィールド初期化子は、他のインスタンス フィールドを参照できません。 |
フィールドは、public、private、protected、internal、または protected internal とマークできます。これらのアクセス修飾子により、クラスのユーザーがフィールドにどのようにアクセスできるかが定義されます。詳細については、「アクセス修飾子 (C# プログラミング ガイド)」を参照してください。
フィールドは、static と宣言することもできます。このように宣言すると、クラスのインスタンスが存在しない場合でも、呼び出し元がいつでもフィールドにアクセスできます。詳細については、「静的クラスと静的クラス メンバ (C# プログラミング ガイド)」を参照してください。
フィールドは、readonly として宣言できます。読み取り専用フィールドには、初期化時またはコンストラクタでしか値を代入できません。static readonly フィールドは基本的に定数と同じですが、C# コンパイラは、このフィールドの値にはコンパイル時にアクセスできず、実行時にしかアクセスできません。詳細については、「定数 (C# プログラミング ガイド)」を参照してください。
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
1.6.4 フィールド
10.4 フィールド
参照
関連項目
オブジェクト、クラス、および構造体 (C# プログラミング ガイド)
コンストラクタの使用 (C# プログラミング ガイド)
継承 (C# プログラミング ガイド)
アクセス修飾子 (C# プログラミング ガイド)
抽象クラスとシール クラス、およびクラス メンバ (C# プログラミング ガイド)