字符串的自定义比较器是否允许空值
本文关键字:空值 许空值 自定义 比较器 是否 字符串 | 更新日期: 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)。
答案最终将取决于您的业务需求。
很可能代码是为特定的需求集编写的,并且空不是考虑的一部分。
如果:
- 您的业务需求需要它
- 输入为空的可能性很小
- 你正在处理的缺陷,因为它
- 多个组件正在利用此功能
我猜这取决于比较器的目的,但我倾向于更改比较器,以便在其中一个字符串为空时抛出异常。这似乎违背了比较器的目的,比较器的目的是返回一个字符串是否大于、等于或小于另一个字符串。