这是比较两个日期时间的两种方法:

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()或需要使用ojit_code?

最佳答案

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

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

话虽如此,如果您希望能够在泛型类或方法中进行比较,将泛型参数限制为实现IComparableIComparable<T>的类型,将允许您在未知具体类型时使用.Compare()进行比较。

关于c# - 比较DateTimes : DateTime. Compare()与关系运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5625196/

10-13 07:15