为什么声明这个时变量名之前的位运算符
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 操作,而是在 .NET 的 C++ 微软实现中声明托管类型对象的语法。
在这种情况下,^
不是按位异或;它声明pingSender
为对托管类型(.NET 的原生类型)的引用Ping
。
我假设您熟悉 C# 和常规非托管 C++ 的基础知识。
这行代码等于
Ping pingSender = new Ping();
在 C# 中,如果Ping
是非托管 C++ 类,
Ping* pingSender = new Ping;
在 C++ 中。如您所见,^
在声明中使用时具有另一种含义,就像*
C/C++ 中的非托管类型一样。