我期待在該比較字符串自定義比較別人的代碼。如果字符串自定義比較允許空值
我注意到,如果至少有一個字符串參數爲空,它會崩潰。
根據比較結果,比較返回-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