比较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
)。
话虽这么说,如果你想能够在generics类或方法中进行比较,将generics参数限制为实现IComparable
或IComparable
将允许你在具体类型时使用.Compare()
进行比较不明。
当您将对象作为IComparable
传递时,“关系”运算符不可用。 在这种情况下,它可以很方便。