比较DateTimes:DateTime.Compare()与关系运算符

以下是比较两个DateTimes的两种方法:

DateTime now = DateTime.Now; DateTime then = new DateTime(2008, 8, 1); // Method 1 if (DateTime.Compare(then, now) < 0) // ... // Method 2 if (then < now) // ... 

.Compare返回一个整数(-1,0,1),指示第一个实例是否早于,等于或晚于第二个实例。

我的问题是,当我可以直接使用关系运算符( <<===>=> )时,为什么我会使用.Compare ? 在我看来,使用.Compare ,无论如何我需要使用关系运算符(至少在上面的例子中;或者我可以创建一个检查案例-1,0和1的switch语句)。

什么情况更喜欢或需要使用DateTime.Compare()

通常,类型的.Compare方法用于排序,而不是用于直接比较。

IComparable接口在类型上受支持时,允许许多框架类正确地对集合进行排序(例如, List.Sort )。

话虽这么说,如果你想能够在generics类或方法中进行比较,将generics参数限制为实现IComparableIComparable将允许你在具体类型时使用.Compare()进行比较不明。

当您将对象作为IComparable传递时,“关系”运算符不可用。 在这种情况下,它可以很方便。