Чем (uint) index >= (uint)_size лучше, чем index >= _size?C#

Место общения программистов C#
Anonymous
Чем (uint) index >= (uint)_size лучше, чем index >= _size?

Сообщение Anonymous »

Я заглянул под капот List и наткнулся на следующий фрагмент кода:

Код: Выделить всё

public T this[int index] {
get {
// Following trick can reduce the range check by one
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
Contract.EndContractBlock();
return _items[index];
}

set {
if ((uint) index >= (uint)_size) {
ThrowHelper.ThrowArgumentOutOfRangeException();
}
Contract.EndContractBlock();
_items[index] = value;
_version++;
}
}
В обоих операторах if index и _size (типа Int32) приводятся к UInt32, < s>Я знаю, что это не из-за переполнения, потому что сначала if есть комментарий, утверждающий обратное.
Вопрос: Что это за концепция приведения целых чисел к целым числам без знака, кроме переполнения, и в какой конкретной ситуации она может быть полезна разработчику?

Подробнее здесь: https://stackoverflow.com/questions/757 ... index-size

Вернуться в «C#»