次のコードの出力には驚きました。「a」は、新しく作成されたオブジェクトへの参照を保持する必要があると思います。結果が 2 でない理由を誰か説明できますか?
class Program
{
static void Main(string[] args)
{
aclass a = new aclass();
Process(a);
Console.WriteLine(a.number);
Console.ReadLine();
}
static void Process(aclass a)
{
aclass temp = new aclass();
temp.number++;
//Console.WriteLine(temp.number);
a = temp;
a.number++;
//Console.WriteLine(a.number);
}
}
class aclass
{
public int number = 0;
}
編集:これはインタビューの質問です。長い間その概念を誤解していたことに今気づきました。引数 a は元の a とは異なりますが、同じアドレスを参照しています。