这里有两种比较两个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
,我无论如何都需要使用关系运算符(至少在上面的例子中是这样;或者我可以创建一个switch语句来检查情况-1、0和1)。
在什么情况下更喜欢或需要使用DateTime.Compare()
发布于 2011-04-12 01:41:42
通常,类型上的.Compare
方法用于排序,而不是用于直接比较。
当一个类型支持IComparable
接口时,它允许许多框架类正确地对集合进行排序(例如,List<T>.Sort
)。
也就是说,如果您希望能够在泛型类或方法中进行比较,则将泛型参数限制为实现IComparable
或IComparable<T>
的类型将允许您在具体类型未知时使用.Compare()
进行比较。
发布于 2011-04-12 01:41:40
当您将对象作为IComparable
传递时,“关系”运算符不可用。在这种情况下,它可能会很方便。
https://stackoverflow.com/questions/5625196
复制相似问题