将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进行比较的正确方法是什么。
答案 0 :(得分:3)
您要使用哪一个取决于您想要的行为。如果OverflowException
的值不适合32位整数,则第一个将抛出ContainerBaseAdress
。如果IntPtr指向某个地址并且正在64位CLR上运行,则可能会发生这种情况。如果抛出异常是所希望的行为,那就去吧。
第二和第三是等效的。演员阵容只包裹new
。然而,这些不会抛出异常,他们只会评估错误。你选择哪一个是风格偏好的问题。