为什么当有DateTime.Subtract(DataTime)
过载时没有DateTime.Add(DateTime)
过载?
鉴于加法和减法运算的相似性,我希望它们具有相同的重载。为什么可能不是这样?
两个DateTime
对象之间的区别是TimeSpan
对象。Subtract(DateTime)
返回TimeSpan
,Subtract(TimeSpan)
返回DateTime
。
但是,您可以通过TimeSpan
(间隔(值或使用AddDays()
、AddMonths()
等方法增加DateTime
,添加两个DateTime
对象在结果方面没有意义
我同意,这是一个缺陷 - 所以让我们去整理一下吧! :)
static class Ext
{
public static DateTime Add(this DateTime one, DateTime two)
{
return new DateTime(one.Ticks + two.Ticks);
}
}
当然,这可能会导致一些问题,但我们会暂时忽略溢出或时区问题。现在我们有了工具,我们有点需要考虑它的用例。
public static void Main()
{
Console.WriteLine("It's " + (DateTime.UtcNow.Add(DateTime.UtcNow)));
}
--> It's 7/1/4038 6:10:06 PM
嗯。。所以。。我会考虑如何使其有用并回复您..
撇开玩笑不谈,这也许是一个很好的方法来证明,如果我们觉得框架缺少我们需要的简单操作,我们可以将其作为扩展添加,即使我们不能对现有类进行子类化。能够在两个日期之间找到日期可能是有意义的,例如:
static class Ext
{
public static DateTime HalfWayTo(this DateTime one, DateTime two)
{
return new DateTime(Math.Abs(one.Ticks + two.Ticks)/2);
}
}
这可能有一个用例。如果你想到一个直接的添加,让我知道..