这是一个看起来很简单的问题:
鉴于本地大小的整数是最好的算法,为什么不C#(或任何其他.NET语言)支持算术与本地大小IntPtr和UIntPtr?
理想情况下,您可以编写如下代码:
for (IntPtr i = 1; i < arr.Length; i += 2) //arr.Length should also return IntPtr
{
arr[i - 1] += arr[i]; //something random like this
}
Run Code Online (Sandbox Code Playgroud)
这样它就可以在32位和64位平台上运行.(目前,您必须使用long.)
编辑:
我没有使用它们作为指针(甚至没有提到"指针"这个词)!它们可以被视为native intMSIL和intptr_tC中的C#对应物stdint.h- 它们是整数,而不是指针.