我可以在立即窗口中执行var b = *myObject;
,并得到一个格式化值0x123456
。但是我不能在代码中执行此操作。它会提示:
必须将*或->运算符应用于指针
为什么我可以在立即窗口中这样做,但在代码中却不行?
我可以在立即窗口中执行var b = *myObject;
,并得到一个格式化值0x123456
。但是我不能在代码中执行此操作。它会提示:
必须将*或->运算符应用于指针
为什么我可以在立即窗口中这样做,但在代码中却不行?
使用不安全指针访问示例 v.s. 使用封送处理
IntPtr pLineBuf;
int[] lineData;
//.
//.
//.
pLineBuf = Marshal.AllocHGlobal(8192 * sizeof(byte));
lineData = new int[8192];
// access elements like this
unsafe
{
byte* pa = (byte*)plineBuf; // cast from IntPtr
for (int j=0; j<10; j++)
lineData[j] = *(pa + j);
}
// OR
for (int j=0; j<10; j++)
lineData[j] = (Marshal.ReadByte(plineBuf + j));
*myObject
识别为托管类型的指针。在直接窗口中,它将其识别为引用myObject
的地址,该引用是类型为object&
的,因此正在对其进行解引用。虽然我不确定这一点,但希望它可以指向更好的答案。 - Stainy