这是一个看起来很简单的问题:
鉴于原生大小的整数最适合算术,为什么 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 int
MSIL 和intptr_t
C中的 C# 对应物stdint.h
——它们是整数,而不是指针。