我正在寻找一个用于比较字符串的自定义比较器的别人代码。
我注意到,如果至少有一个字符串参数为null,它将会失效。
比较根据比较结果返回-1,0或1。
如果这样的代码被修复以处理空值,那么如果其中一个参数为null,它应该返回什么?
答案 0 :(得分:6)
根据IComparer.Compare Method (MSDN)
的备注部分允许将null与任何类型进行比较,并且在使用IComparable时不会生成异常。排序时,null被认为小于任何其他对象。
即。以下似乎是明智的:
答案 1 :(得分:1)
答案将/应最终成为您业务需求的结果。
可能代码是针对某些需求编写的,而null则不是考虑因素的一部分。
如果出现以下情况应该修复:
答案 2 :(得分:1)
我想这取决于比较器的用途,但如果其中一个字符串为null,我会倾向于更改比较器以抛出异常。它似乎违背了比较器的目的,即返回一个字符串是否大于,等于或小于另一个字符串。 Null不适合那个集合。