コンストラクタ

自分用のメモ。

C#にはコンストラクタが三種類ある。 インスタンスコンストラクタ、静的コンストラクタ、プライベートコンストラクタ、である。 この三種類をまとめて(かつては)クラスコンストラクタ、と呼んでいたらしい。 ややこしい。 まあ、普通はコンストラクタといえばインスタンスコンストラクタなわけだが。

静的コンストラクタはクラスのstatic readonlyなメンバ変数を初期化するときに (インスタンスコンストラクタより前に)呼ばれる。 確かにstatic readonlyな変数はクラスの静的変数だから、普通のコンストラクタで初期化されるのはおかしい。 だから静的コンストラクタなるものがあった方が筋は通る。 だがstatic readonly変数も通常のコンストラクタで初期化することも可能。 ていうかふつうそうする。

プライベートコンストラクタは、インスタンスを生成しないクラス(Mathクラスとか)などに使われる。 なるほど。