2007年11月5日月曜日

値クラス(value class)のコンストラクタ

値クラスにコンストラクタを宣言した所
コンパイルエラーとなり、原因を調べてましたので残しておきます。

値クラスの宣言方法:
public value class A{
...
};

値クラスにはデフォルトコンストラクタを宣言することができません。
(コピーコンストラクタも宣言できません)

値クラスにはデフォルトコンストラクタとコピーコンストラクタが
自動で生成されるようです。

デフォルトコンストラクタでは
数値は全て0(ゼロ)、参照型はnullで初期化されます。

コピーコンストラクタは
メンバ変数のたんなるバイトコピーです。
なので、ポインタで持ってるものを値クラスにする場合は気をつけましょう。
そういう値クラスを作らない方がよいかな。

てな仕様だそうです。

参考文献:
値クラス仕様:http://vene.wankuma.com/ecma372/22_value_type.aspx

.

0 件のコメント:

ラベル