1

書くとき

Console.Write(new Class().Work)

「新しいクラス」はまだ参照を生成しますか?

スタック上の値はどうなりますか? (住所)

4

3 に答える 3

1

もちろん、それは参照を生成します。それClassを呼び出すWorkには、のインスタンスが存在する必要があります。それを保持する変数はありません。

スタックについて何を意味するのかわからない。

于 2012-08-11T18:17:23.533 に答える
1

参考にさせていただきます。あなたの質問の新しいクラス。値は、クラスを指しているスタック アドレスの HEX 値になります。したがって、.NET では、参照を介して参照している場合、アドレスがスタックに格納されるため、アクセスしたいときに、コンパイラはどの HEX 値を見つけてから、適切なオブジェクト (クラス、関数など) をフェッチします。ヒープ。

于 2012-08-11T18:23:05.640 に答える
1

つまり、newobj、callvirt、call

はい、オブジェクトが作成されます - 参照はスタック上にあり、callvirt によって消費されます (呼び出し用のメソッドの戻り値を残します)

変数は必須ではありませんが、1 つでも同じように有効です。

于 2012-08-11T18:23:39.810 に答える