万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

「C#入門 最終回」記事ツッコミ

C#のrefについて 連載:C#入門 最終回 第22回 落ち穂拾い

これ見ると objectにつっこんでいるが、objectは参照型では?

object a = new int[]{1,2,3};
void function(object a)
{
    ((int[])a)[1] = 3;
    Console.WriteLine(((int[])a)[1]);
    // 3になる!
}

function(a);
Console.WriteLine(((int[])a)[1]);
// 3になる

これを実行してみよう。 functionを呼び出した後も両方3だ。

http://csharppad.com/

このサイトで実行してみよう。 object型ならrefでも一緒では??だが確証が持てないので文献探したがここに書いてた。

http://toach.click/csharp_ref-and-out/

「refを付けてると、値型と参照型の違いを知らないと思われる、かも?」 違いは知ってたけど、念の為refつけてた事あったw むしろ参照型に対してref付けるつけないの違いを知らなかったが、同じなんだな。