私は C++ の経験がありますが、C++/CLI を学び始めたばかりです。私は次のパターンによく気づきます。
array<String^>^ x;
皆さんはこれについてどう思いますか?私がこれを解釈する方法は、これは文字列の配列であり、それらすべてをマネージド ヒープに配置する必要があるため、String^ を使用しますが、ベクターもマネージド ヒープに配置する必要があるため、
array<something>^.
正しい?
C++cliref class
はマネージド ヒープ上に存在する必要があります。実際の管理されていないヒープ インスタンスはブロックされます。
String
とはどちらarray
もref class
型であるため、マネージド ヒープ上に存在する必要があります。
C++ では、これらがガベージ コレクションされたポインター型であり、リテラルや従来のポインター型ではないことをユーザーに思い出させるために、型を . で終了する必要があります^
。
これは冗長ですが ( のすべてのインスタンスがarray<>
存在するarray<>^
ため、そのようなトークンがない C#^
では)、これはマネージド型であり、通常の型ではないことに注意してください。マネージド コードとアンマネージド コードを混在させる場合に役立ちます。