ハンドルは操縦しづらい
参照型オブジェクトの場合、T^は参照がボックス化されて、値型の場合はT^は値がボックス化される、とでも覚えればいいのか?
ところで、
value struct Bar { int i; }; void foo(Bar^ bar) { bar->i++; } int main(array<System::String ^> ^args) { Bar a; a.i = 100; Bar^ b = %a; foo(%a); foo(b); Console::WriteLine(a.i); Console::WriteLine(b->i); return 0; }
aとbのメンバーの値が違うのは何故?ひょっとして、ボックス化ってコピーを作っているのか?
で、Bar^ = Bar^ はハンドルをコピーしているだけということか?
つーことはアンボックスもコピーする…のは当然か。実体に対して代入演算子を適用しているわけだから。
.netでGUI作る分にはとてもいいが、未だにこの辺に慣れない。