クラスメンバ
■クラスメンバ
インスタンスを生成しなくても呼び出せるフィールド、メソッドの事。
静的メンバ、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をつけない意味はあまりない。