Почему мы не можем выполнять арифметику IntPtr и UIntPtr на C #?

Это простой вопрос:

Учитывая, что целые числа с собственным размером лучше всего подходят для арифметики, почему 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 , которые являются целыми числами, не указатели.

6
задан Mehrdad 8 April 2011 в 03:00
поделиться