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 コンストラクタ内でのみ代入が可能です。