Неподписанный по сравнению с числами со знаком как индексы

Каково объяснение для использования чисел со знаком как индексы в .NET?

В Python можно индексировать от конца массива путем отправки отрицательных чисел, но дело обстоит не так в .NET. Для .NET не легко добавить такую опцию позже, поскольку это могло взломать другой код, возможно, с помощью специальных правил (да, плохая идея, но я предполагаю, что это происходит) на индексации.

Не то, чтобы я имею, когда-либо должны были индексировать массивы более чем 2 147 483 647 в размере, но я действительно не могу понять, почему они выбирают числа со знаком.

Это может быть, потому что более нормально использовать числа со знаком в коде?

Править: Я просто нашел эти ссылки:

Опасности неподписанного повторения в C/C++

Длины слова со знаком и индексы

Edit2: хорошо, несколько других серьезных оснований от потока Matthew Flaschen отправили:

  • Исторические причины, поскольку это - подобное языку C
  • Interop с c

9
задан simendsjo 17 June 2010 в 09:26
поделиться

3 ответа

Для простоты конечно. Вам нравится проблема при выполнении арифметики размеров с целыми числами без знака?

3
ответ дан 4 December 2019 в 21:47
поделиться

Это может быть давней традицией использования значения ниже 0 в качестве недопустимого индекса. Такие методы, как String.IndexOf, возвращают -1, если элемент не найден. Следовательно, возвращаемое значение должно быть подписано. Если потребителям индекса потребуются беззнаковые значения, вам нужно будет а) проверить и б) привести значение, чтобы использовать его. Для подписанных индексов вам просто нужен чек.

4
ответ дан 4 December 2019 в 21:47
поделиться

Без знака не соответствует требованиям CLS.

2
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: