Это простой вопрос:
Учитывая, что целые числа с собственным размером лучше всего подходят для арифметики, почему 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
.)
Изменить:
Я не использую их как указатели (слово «указатель» не было т даже упомянул)! Их можно рассматривать как аналог C # native int
в MSIL и intptr_t
в C stdint.h
, которые являются целыми числами, не указатели.