我真的很討厭使用IComparer - 直到今天,經過多年的.NET工作,我仍然經常被那些1s和-1s弄糊塗了。使用IComparable.Compare而不使用幻數
我可以以某種方式代替,而不必每次Compare調用後投輸出整數到別的一些不言自明的名字的Compare結果值?
我試圖像這樣定義一個枚舉:
public enum ComparerResult
{
ALessThanB = -1,
Equal = 0,
AGreaterThanB = 1
}
if(comparer.Compare(a, b) == ComparerResult.ALessThanB)
但是,這當然不會沒有投編譯。
這當然也適用於IComparable.CompareTo。
感謝您的想法
這也很好,因爲返回的值不一定必須是-1,0或1.它只需小於零,零或大於零。 – Reddog 2012-01-17 19:44:51
@Reddog,實際上,是的,我只是檢查了該方法的規範,並不能保證它會返回-1或1。 – 2012-01-17 19:47:06