Причины не бросать при реализации `IComparable <T>`? - PullRequest
0 голосов
/ 04 октября 2019

Есть ли какие-либо аргументы против броска внутри реализации IComparable<T>.CompareTo(T value)?

Имеет ли смысл, что Nullable<T>.Compare(null, notNullValue) не бросает и почему?

1 Ответ

2 голосов
/ 04 октября 2019

Причины отказа от броска заключаются в том, что он не нужен и что подпись метода IComparable.CompareTo (T) не указывает никаких исключений, поэтому вы нарушите контракт.

(Кстати. Метод IComparable.CompareTo (Object) разрешает ArgumentExecption).


Имеет ли смысл, что Nullable.Compare (null, notNullValue)не бросает и почему?

Да, имеет смысл не бросать, поскольку значение null имеет свое место в порядке вещей. Например, если в базе данных есть столбец, который можно обнулять, вы все равно можете заказать его. В предложение SELECT - ORDER BY (Transact-SQL) вы можете прочитать:

ASC |DESC

Указывает, что значения в указанном столбце должны быть отсортированы в порядке возрастания или убывания. ASC сортирует от самого низкого значения до самого высокого значения. DESC сортирует от самого высокого значения до самого низкого значения. ASC - это порядок сортировки по умолчанию. Нулевые значения обрабатываются как минимально возможные значения. [выделение мое]

...