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

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

1 //IntPtr.Size在64位为8,在32位为4 
2 public static Boolean Is64Bit()
3 {
4        if (IntPtr.Size == 4)
5            return false;
6        else
7              return true;
8 }
View Code

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

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

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

      但请注意:

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

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

posted @ 2015-11-24 21:56  一菲聪天  阅读(1307)  评论(0编辑  收藏  举报