2024年1月6日土曜日

C# でフィールドとは

 C# でフィールドとは、クラスまたは構造体で直接宣言される任意の型の変数です。フィールドは、それを含んでいる型のメンバーです。

クラスまたは構造体には、インスタンス フィールドと静的フィールドのいずれか、またはその両方が含まれる場合があります。

インスタンス フィールド

インスタンス フィールドは、型のインスタンスに固有です。つまり、各インスタンスが独自のインスタンス フィールドの値を持ちます。

インスタンス フィールドは、クラスの宣言とコンストラクターの間、クラスの中では一番上に記述します。

C#
class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person()
    {
        Name = "John Doe";
        Age = 30;
    }
}

// インスタンス化
var person = new Person();

// フィールドにアクセス
Console.WriteLine(person.Name); // John Doe
Console.WriteLine(person.Age); // 30

静的フィールド

静的フィールドは、型に固有です。つまり、型のすべてのインスタンスが同じ静的フィールドの値を共有します。

静的フィールドは、クラスの宣言の末尾に記述します。

C#
class Person
{
    public static int Population { get; set; }

    public Person()
    {
        // 静的フィールドは、インスタンス化時に初期化する必要はありません。
        // Population = 100;
    }
}

// 静的フィールドにアクセス
Console.WriteLine(Person.Population); // 0

// 静的フィールドを変更
Person.Population = 100;

// 静的フィールドの値を取得
Console.WriteLine(Person.Population); // 100

フィールドのアクセス修飾子によって、フィールドのアクセス範囲を制限することができます。

  • public: すべてのクラスからアクセス可能
  • protected: 同じクラスとその派生クラスからアクセス可能
  • internal: 同じ名前空間内のクラスからアクセス可能
  • private: 同じクラスからのみアクセス可能

フィールドのアクセス修飾子は、フィールドの宣言時に指定します。

C#
class Person
{
    public string Name { get; set; }
    protected int Age { get; set; }
    internal static int Population { get; set; }
    private bool IsAdult { get; set; }
}

フィールドは、オブジェクト指向プログラミングにおけるカプセル化の概念を実現するために使用されます。カプセル化とは、オブジェクトの内部状態を外部から隠蔽することです。

フィールドは、オブジェクトの内部状態を表す変数として使用することで、オブジェクトの内部状態を外部から直接変更できないようにすることができます。

0 件のコメント:

コメントを投稿