这是一个看起来很简单的问题:
鉴于原生大小的整数最适合算术,为什么 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
}
这样它就可以在 32 位和 64 位平台上运行。(目前,您必须使用long.)
编辑:
我没有将它们用作指针(甚至没有提到“指针”这个词)!它们可以被视为native intMSIL 和intptr_tC中的 C# 对应物stdint.h——它们是整数,而不是指针。