C#实现依赖于系统的整数

0xb*_*00d 4 c# integer

我需要定义一个依赖于系统的整数类型,以便与一些低级库相兼容.我已经设置了x86和x64项目配置,并为它们定义了条件编译符号(IA32和INTEL64).

所以,我想做以下事情:

#if IA32
    typedef int SysInt;
    typedef uint SysUInt;
#elif INTEL64
    typedef long SysInt;
    typedef ulong SysUInt;
#endif
Run Code Online (Sandbox Code Playgroud)

但是,由于typedef在C#中不可用,因此不起作用.实现这个的最佳选择是什么?

提前致谢.最好的祝福.

Gab*_*abe 11

你想IntPtrUIntPtr,这是在32位进程32位,并在64位进程64位.由于这些类型自动采用进程的"位数",因此不需要条件编译或两个不同的项目配置来使用它们.

但是,如果您确实想要对值进行数学运算,则应将它们转换为longulong进行数学运算,然后返回IntPtrUIntPtr将它们传递给外部库.