字符串的自定义比较器是否允许空值

本文关键字:空值 许空值 自定义 比较器 是否 字符串 | 更新日期: 2023-09-27 17:49:21

我正在看别人的代码自定义比较器比较字符串。

我注意到,如果至少有一个字符串参数为空,它将失败。

根据比较的结果返回-1、0或1。

像这样的代码应该被修复来处理null吗?如果是这样,如果其中一个参数是空的,它应该返回什么?

字符串的自定义比较器是否允许空值

根据IComparer的备注部分。比较方法(MSDN)

允许将null与任何类型进行比较,并且在使用IComparable时不会产生异常。排序时,null被认为小于任何其他对象。

  • 如果它们都是null,返回0
  • 如果x为空但不是y,返回-1 (x <y)>
  • 如果y为空但不是x,则返回1 (x> y)。

答案最终将取决于您的业务需求。

很可能代码是为特定的需求集编写的,并且空不是考虑的一部分。

如果:

  • 您的业务需求需要它
  • 输入为空的可能性很小
  • 你正在处理的缺陷,因为它
  • 多个组件正在利用此功能

我猜这取决于比较器的目的,但我倾向于更改比较器,以便在其中一个字符串为空时抛出异常。这似乎违背了比较器的目的,比较器的目的是返回一个字符串是否大于、等于或小于另一个字符串。