【发布时间】:2015-01-20 03:51:03
【问题描述】:
我想编写一个扩展方法,将一天添加到 Nullable DateTime,但修改日期本身。
我想按如下方式使用:
someDate.AddOneDay();
这直接改变了 someDate 的值。
我最初写的代码是:
public static DateTime? AddOneDay(this DateTime? date)
{
if (date.HasValue)
{
date.Value = date.Value.AddDays(1);
}
return null;
}
但这不起作用,因为引用已更改,因此以这种方式调用它 不会改变 someDate 的值。
有没有办法实现这一点并避免以下代码:
someDate = someDate.AddOneDay();
我也在考虑一些 DateTime 属性的设置器,但它们没有任何..
public int Day { get; }
public int Month { get; }
public int Year { get; }
【问题讨论】:
-
我不会那样做......
-
嗯,
DateTime是 .NET Framework 中的 immutable type。你不能改变它。正如您在代码中看到的那样,您分配了date.Value属性date.Value.AddDays(1)返回的内容。 -
所以你的目标是迷惑任何可能误读你的代码并将其误认为标准内置功能的人?
-
不,我想节省我写 someDate = someDate.HasValue 的时间? someDate.AddDays(1) : null;去很多地方:) @Damien_The_Unbeliever
-
@gyosifov 如果你在很多地方都有这样的代码,也许你需要重新考虑你的设计。如果代码有异味,请接受提示;)
标签: c# datetime extension-methods