Каково объяснение для использования чисел со знаком как индексы в .NET?
В Python можно индексировать от конца массива путем отправки отрицательных чисел, но дело обстоит не так в .NET. Для .NET не легко добавить такую опцию позже, поскольку это могло взломать другой код, возможно, с помощью специальных правил (да, плохая идея, но я предполагаю, что это происходит) на индексации.
Не то, чтобы я имею, когда-либо должны были индексировать массивы более чем 2 147 483 647 в размере, но я действительно не могу понять, почему они выбирают числа со знаком.
Это может быть, потому что более нормально использовать числа со знаком в коде?
Править: Я просто нашел эти ссылки:
Опасности неподписанного повторения в C/C++
Длины слова со знаком и индексы
Edit2: хорошо, несколько других серьезных оснований от потока Matthew Flaschen отправили:
Для простоты конечно. Вам нравится проблема при выполнении арифметики размеров с целыми числами без знака?
Это может быть давней традицией использования значения ниже 0 в качестве недопустимого индекса. Такие методы, как String.IndexOf, возвращают -1, если элемент не найден. Следовательно, возвращаемое значение должно быть подписано. Если потребителям индекса потребуются беззнаковые значения, вам нужно будет а) проверить и б) привести значение, чтобы использовать его. Для подписанных индексов вам просто нужен чек.