1

IntPtr将 a的值与 a进行比较的正确方法是int什么?

IntPtr ContainerBaseAdress = ReadmemoryProperply.ReadProcessPointer(Tibia.Handle, ContainerPointer);

if (ContainerBaseAdress.ToInt32() == 51)
{
    //Executable code
}

或者

IntPtr ContainerBaseAdress = ReadmemoryProperply.ReadProcessPointer(Tibia.Handle, ContainerPointer);

if (ContainerBaseAdress == (IntPtr)51)
{
    //Executable code
}

或者

IntPtr ContainerBaseAdress = ReadmemoryProperply.ReadProcessPointer(Tibia.Handle, ContainerPointer);

if (ContainerBaseAdress == new IntPtr(51))
{
    //Executable code
}

或者基本上,将 IntPtr 的值与 int 进行比较的正确方法是什么。

4

1 回答 1

3

您要使用哪一个取决于您想要的行为。OverflowException如果 的值ContainerBaseAdress不适合 32 位整数,则第一个将抛出一个。如果 IntPtr 指向某个地址并且正在 64 位 CLR 上运行,则很可能会发生这种情况。如果抛出异常是期望的行为,那就继续吧。

第 2 和第 3 是等价的。演员阵容刚刚结束new。但是这些不会抛出异常,它们只会评估错误。你选择哪一个是风格偏好的问题。

于 2013-10-24T20:14:56.887 回答