我期待在该比较字符串自定义比较别人的代码。如果字符串自定义比较允许空值
我注意到,如果至少有一个字符串参数为空,它会崩溃。
根据比较结果,比较返回-1,0或1。
像这样的代码应该被修复来处理空值,如果是这样的话,如果其中一个参数为null,它应该返回什么?
我期待在该比较字符串自定义比较别人的代码。如果字符串自定义比较允许空值
我注意到,如果至少有一个字符串参数为空,它会崩溃。
根据比较结果,比较返回-1,0或1。
像这样的代码应该被修复来处理空值,如果是这样的话,如果其中一个参数为null,它应该返回什么?
答案最终会成为您业务需求的结果。
可能代码是写入一定的需求集合,而空值不是考虑的一部分。
它应该是固定的,如果:
我想这取决于比较器的目的,但我认为ð精益朝着改变比较器抛出一个异常,如果其中一个字符串为空。这似乎违背比较器,这是返回一个字符串是否比高于其他字符串大于,等于,或更小的目的。空不适合那一套。
根据的IComparer.Compare Method (MSDN)
比较空与任何类型的备注部分是允许的,使用了IComparable时不会产生异常。排序时,null被认为比任何其他对象都少。
I.e.以下似乎是合理的:
作为参考点,在Java中,['String'](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/ lang/String.java#String.compareTo%28java.lang.String%29)假定参数非空。 – 2011-04-07 01:35:18
[我怎样才能使我的通用比较器(IComparer)处理空值?](http://stackoverflow.com/questions/4852432/how-can-i-make-my-generic-comparer-icomparer-handle-空) – jtbandes 2016-05-30 16:51:15