C# のコンストラクタなどについての雑記

C# には、C++ のようなコピーコンストラクタはありません。
コピーを作成するには、ICloneable インターフェースを以下のように実装する必要があります。
浅いコピーとは、値型のオブジェクトに対しては値の複製を行い、参照型のオブジェクトに対しては参照だけをコピーすること。

Class Some: ICloneable
{
  public Object Clone()
  {
    return MemberwiseClone();//!<浅いコピー
  }
}

こんな this の使い方ができる。

Class Some
{
  public Some(int i) { ... }
  public Some() : this(42) { ... } //!< 別のコンストラクタ Some(int i) を呼び出す
}

クラスで static コンストラクタを宣言すると、そのクラスのインスタンスが一つでも作成される前に、確実にその static コンストラクタが実行されます。

キーワード readonly をつけた変数は、インスタンスフィールドであれば、static でないコンストラクタ内でのみ代入が可能です。また、static フィールドであれば、static コンストラクタ内でのみ代入が可能です。