C#中判断系统的架构(32位,还是64位)

时间:2023-03-09 00:55:58
C#中判断系统的架构(32位,还是64位)

一种很简单的方法就是根据IntPtr类型的Size属性来判断,

 //IntPtr.Size在64位为8,在32位为4
public static Boolean Is64Bit()
{
if (IntPtr.Size == )
return false;
else
return true;
}

通过查看IntPtr的源码可以看到:

    //....
public struct IntPtr : ISerializable
{
//...
// 摘要:
// 获得此实例的大小。
//
// 返回结果:
// 此平台上的指针或句柄的大小,按字节计。此属性的值在 32 位平台上为 4,在 64 位平台上为 8。
public static int Size { get; }
//...
}

确实如此,在64位下IntPtr.Size=8,在32位下为4。

但请注意:

在部分Visual Studio中,如VS 2013在64的操作系统中会优先使用32位的架构,所以判断系统架构出错,

此时只需要在项目的 Properties(属性) --> Bulid(生成) --> Prefer 32-bit(首选32位),将复选框取消即可