クラスメンバ

■クラスメンバ

 インスタンスを生成しなくても呼び出せるフィールド、メソッドの事。

 静的メンバ、staticメンバとも言う。

 クラスメンバの値は、全てのインスタンスで共有される。

 

■クラスメソッド

 クラスメソッドは、通常のメソッド定義にstatic修飾子をつけるだけ。

    ex)  public static string getName()

 ・this構文はインスタンスを参照する為の物なので、クラスメンバには

  使えない。

 ・クラスメソッドは、インスタンス変数経由では使えない。

  (*)インスタンス名.メンバ名はNG。クラス名.メンバ名とする。

 

■クラスフィールド

 クラスフィールドは、通常のフィールド定義にstatic修飾子をつけるだけ。

    ex)  public static string _name()

 ・他言語でいうグローバル変数に近いものであり、あまり使うべきでない。

  読み取り専用などで使用すべき。

 (*)シングルトンパターンの実現において使用される。

 

■クラス定数

 クラスブロックの直下に定義された読み取り専用フィールドのこと。

 static readonly またはconst句にて定義する。 

 将来的にも不変のものはconst、変わる可能性がある値はreadonlyを

 使用すべき。(となると基本はreadonlyを使うべき)

 (*)const定数は無条件にstatic扱いになり、ビルド時に値もきまる。

 (*)readonlyはstaticをつければクラス定数、つけなければインスタンス定数。

  コンストラクタ内で値を変更することができる。

  readonlyをつけてstaticをつけない意味はあまりない。