かるばタンのセッション。
値型の代表格がint、参照型の代表格がstring
値をそのまま放り込めるのが値型、newして放り込むのが参照型…
おっとぉ!
string s;
s = "はらたいら";
「new してないやんけ! これのドコが参照型なん!?」
って突っ込まれたらどないしょー って、
かるぼタンのドキドキが伝わってくるのです ^^;
string への文字列の代入は極めて特殊で、
s = "はらたいら"; は
s = new string("はらたいら"); の略記なのよね。
あるいは:
s → × ? → "はらたいら"
ってなってるとき、?がsに代入されて
s → "はらたいら"
となるって解釈。
むしろコッチが正解でしょうね。
文字列リテラル:"はらたいら" がコード上に現れた時点
で(裏でコソーリ)newされてstring定数とでも言うべき参照ができてる、と。
s = "はらたいら" は単にstringからstringへの代入なんやね。
そしてまた if ( s == "篠沢教授" ) と書けることのナゾ。
Java屋さんには周知だけども、参照型はフツー==で比較できないのに、とか。
stringは参照型の中では非常に特別な存在。
しかしながら参照型の代表格としてstring以外に何がある?
ってジレンマがあるです。 教える側にはヒジョーに悩ましいわけで。