これを宣言するときに変数名の前にビット演算子があるのはなぜですか
Ping ^pingSender = gcnew Ping;
ありがとう
あなたはこのコードについて話しているのですか?
Ping ^ pingSender = gcnew Ping;
// When the PingCompleted event is raised,
// the PingCompletedCallback method is called.
pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
ここで、これはpingクラスのインスタンスがSystem.Net.NetworkInformation::Pingから作成されることを意味します。簡単に言うと、これはXOR演算ではなく、MicrosoftのC ++for.NET実装でマネージタイプのオブジェクトを宣言する構文です。
このコンテキストで^
は、はビット単位のXORではありません。pingSender
管理対象タイプ(.NETにネイティブなタイプ)への参照であることを宣言しますPing
。
あなたはC#と通常の管理されていないC++の基本に精通していると思います。
このコード行は次のようになります
Ping pingSender = new Ping();
C#で、Ping
管理されていないC ++クラスの場合は、
Ping* pingSender = new Ping;
C++で。ご覧のとおり、C / C ++のアンマネージ型の^
場合と同様に、宣言で使用すると別の意味があります。*