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 操作,而是在 .NET 的 C++ 微软实现中声明托管类型对象的语法。

于 2012-08-19T10:30:45.760 回答
0

在这种情况下,^不是按位异或;它声明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 回答