为什么没有DateTime.Add(DateTime)方法,而有一个减法方法?



为什么当有DateTime.Subtract(DataTime)过载时没有DateTime.Add(DateTime)过载?

鉴于加法和减法运算的相似性,我希望它们具有相同的重载。为什么可能不是这样?

两个DateTime对象之间的区别是TimeSpan对象。Subtract(DateTime)返回TimeSpanSubtract(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);
}
}

这可能有一个用例。如果你想到一个直接的添加,让我知道..

最新更新