私はこれを正しく尋ねていないことも知っています。私の質問をより良くするのを手伝ってください。
ハンドルについて理解するのに少し苦労しています。ある意味では、ハンドルのように見えます。しかし、ポインターとは異なり、ハンドル変数に値を直接割り当てることができるようで、ハンドル自体ではなく、基になるデータ値に影響を与えます。
テスト コードは、ハンドルを使用しても、ハンドルを「逆参照」してデータを取得しても、同じ値が得られることを明確に示しています。明らかに、これはアンマネージ ポインターでは機能しません。私は何を理解していませんか?
#include <iostream>
int main()
{
int ^y;
int ^a, ^b, ^c;
long x;
y= gcnew int(100);
a=y;
b=y;
c=y;
c= gcnew int(200);
b= 300;
System::Console::WriteLine(y); // returns 100 (instead of something pointer-like)
System::Console::WriteLine(*y); // also returns 100
System::Console::WriteLine(a); // 100
System::Console::WriteLine(b); // 300
System::Console::WriteLine(c); // 200
x = static_cast<long>(y);
*y = 10;
System::Console::WriteLine(x); // 10
System::Console::WriteLine(y); // 10
System::Console::WriteLine(*y); // 10
}
追加する編集 - WirteLine が逆参照を行ったのではないかと思いましたが、静的キャストが long にならないことを期待していました。これは自動ボックス化解除にも関連していますか?