0

これを宣言するときに変数名の前にビット演算子があるのはなぜですか

Ping ^pingSender = gcnew Ping;

ありがとう

4

2 に答える 2

1

あなたはこのコードについて話しているのですか?

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実装でマネージタイプのオブジェクトを宣言する構文です。

于 2012-08-19T10:30:45.760 に答える
0

このコンテキストで^は、はビット単位のXORではありません。pingSender管理対象タイプ(.NETにネイティブなタイプ)への参照であることを宣言しますPing

あなたはC#と通常の管理されていないC++の基本に精通していると思います。

このコード行は次のようになります

Ping pingSender = new Ping();

C#で、Ping管理されていないC ++クラスの場合は、

Ping* pingSender = new Ping;

C++で。ご覧のとおり、C / C ++のアンマネージ型の^場合と同様に、宣言で使用すると別の意味があります。*

于 2012-08-19T10:29:05.017 に答える