正确地将IntPtr与int进行比较

时间:2013-10-24 20:12:34

标签: c# intptr

IntPtr的值与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进行比较的正确方法是什么。

1 个答案:

答案 0 :(得分:3)

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

第二和第三是等效的。演员阵容只包裹new。然而,这些不会抛出异常,他们只会评估错误。你选择哪一个是风格偏好的问题。