Причины отказа от броска заключаются в том, что он не нужен и что подпись метода IComparable.CompareTo (T) не указывает никаких исключений, поэтому вы нарушите контракт.
(Кстати. Метод IComparable.CompareTo (Object) разрешает ArgumentExecption
).
Имеет ли смысл, что Nullable.Compare (null, notNullValue)не бросает и почему?
Да, имеет смысл не бросать, поскольку значение null
имеет свое место в порядке вещей. Например, если в базе данных есть столбец, который можно обнулять, вы все равно можете заказать его. В предложение SELECT - ORDER BY (Transact-SQL) вы можете прочитать:
ASC |DESC
Указывает, что значения в указанном столбце должны быть отсортированы в порядке возрастания или убывания. ASC сортирует от самого низкого значения до самого высокого значения. DESC сортирует от самого высокого значения до самого низкого значения. ASC - это порядок сортировки по умолчанию. Нулевые значения обрабатываются как минимально возможные значения. [выделение мое]