R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

2010年7月19日

null許容型は参照型と値型のどちらになるの?

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) を割り当てることができる値型をサポートします。このクラスは継承できません。

参照型のように~、ということは、参照型ではないのかな?

posted @ 10:05 | Feedback (479)