【发布时间】:2011-08-01 04:23:42
【问题描述】:
这是一个看起来很简单的问题:
鉴于原生大小的整数最适合算术,为什么 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。)
编辑:
我不使用这些作为指针(甚至没有提到“指针”这个词)!它们可以被视为 MSIL 中 native int 和 C 中 stdint.h 中 intptr_t 的 C# 对应物——它们是整数,不是指针。
【问题讨论】:
-
@BoltClock:是的...你认为返回
native int的方法的.NET返回类型是什么?