提问人:sm_ 提问时间:10/4/2019 更新时间:10/4/2019 访问量:86
实现“IComparable<T>”时不抛出的理由?
Reasons to not throw when implementing `IComparable<T>`?
问:
是否有任何反对在实现中抛出的论据?IComparable<T>.CompareTo(T value)
不扔有意义吗,为什么?Nullable<T>.Compare(null, notNullValue)
答:
2赞
tymtam
10/4/2019
#1
不抛出的原因是不需要它,并且 IComparable.CompareTo(T) 方法的签名未指定任何异常,因此您将破坏合约。
(顺便说一句。IComparable.CompareTo(Object) 方法允许 )。ArgumentExecption
Nullable.Compare(null, notNullValue) 不抛出有意义吗,为什么?
是的,不扔是有道理的,因为价值在事物的顺序中占有一席之地。例如,如果数据库中有一个可为 null 的列,您仍然可以对其进行排序。在 SELECT - ORDER BY 子句 (Transact-SQL) 中,可以读取:null
ASC公司 |DESC
指定指定列中的值应按升序或降序排序。ASC 从最低值到最高值排序。DESC 从最高值到最低值排序。ASC 是默认排序顺序。Null 值被视为可能的最小值。[强调我的]
评论
0赞
sm_
10/8/2019
Null 或未定义值的含义不应该是一个领域问题,而不是默认为框架或 SQL 标准吗?
评论
null
throw
where T: notnull
IComparable<T>
IComparable
null
null=null
IComparable.CompareTo