null許容型
は参照型と値型のどちらになるんだろう?
と、ふと思った。
例えば、以下のようなコードを実行しても、null許容型は参照渡しをしない。
int? a = 1;
int? b = a;
a = 2;
上記の結果、変数 b には 1 が格納されたままの筈だ。
int? は Nullable クラスを使った変数の宣言のシンタックスシュガーだ。
だから、上記のコードは、以下のように記述したことと同じになる筈だ。
Nullable<int> a = 1;
Nullable<int> b = c;
a = 2;
しかし、ここでは string 型も同じような振舞い方をするという点で納得していた。
string a = “おまえのかあちゃん”;
string b = a;
a = “デベソ”;
どちらも参照型なのに、他の変数に代入するときは、値渡しのような動きをする。
しかし、気になったのは、MSDNライブラリーの以下の記述。
http://msdn.microsoft.com/ja-jp/library/system.nullable(VS.80).aspx
Nullable クラス
>参照型のように null 参照 (Visual Basic では Nothing) を割り当てることができる値型をサポートします。このクラスは継承できません。
参照型のように~、ということは、参照型ではないのかな?