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

标签 c# integer

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

所以,我想做以下事情:

#if IA32
    typedef int SysInt;
    typedef uint SysUInt;
#elif INTEL64
    typedef long SysInt;
    typedef ulong SysUInt;
#endif

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

提前致谢。最好的问候。

最佳答案

你想要IntPtrUIntPtr,它们在32位进程中是32位,在64位进程中是64位。由于这些类型自动采用进程的“位数”,因此无需条件编译或两个不同的项目配置即可使用它们。

如果你真的想对这些值进行数学运算,你应该将它们转换为 longulong 来进行数学运算,然后返回到 IntPtr UIntPtr 将它们传递给您的外部库。

关于C# 实现依赖于系统的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5308110/

相关文章:

c# - 无法在 WP 上调用必应翻译服务

matlab - linprog 可以给出 x 的整数值吗?

python-3.x - python : Unable to terminate loop with different type of variable

c# - 在 .NET 中移动不同卷上的文件

c# - 枚举 : need to get the name of the enum, 不是它的 int 值,作为一个字符串

swift - 为什么某些值对我的代码不起作用?

C: int 或 unsigned int 我用于指针增加的类型

arrays - 如何取消嵌套 Postgres 中的日期数组?

c# - 如何使用反射访问私有(private)基类字段

c# - 统计MVC中Child的记录数