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