DateTime.Now在类构造函数中

时间:2014-01-13 07:54:52

标签: c# datetime constructor constructor-overloading

美好的一天。
我正在研究处理任务的事情 每个任务由3个字符串和一个DateTime对象

组成

下面是我构建的构造函数。

public Task(string von, string was, string an, DateTime zeit = DateTime.Now)

编译时出现编译错误

Default parameter value for 'zeit' must be a compile-time constant (CS1736)

我认为问题是,-obvioulsy- DateTime.Now的值取决于构造函数被调用的时间,这是我想要的全部内容。

我已经查看了[this]线程,但它并不真正适用于我,因为DateTime对象的内存需求总是相同的,并且该线程说问题是该调用的未知堆需求。{ {3}}
我已经有了一个解决方案的想法(见下文),但我们都知道解决方法不是最佳实践

public Task(string von, string was, string an, DateTime zeit){
    if(zeit == null)
        dateOfCreation = DateTime.Now; //dateOfCreation being the name of Task's internal DateTime field.
    else
        dateOfCretion = zeit;

因此,如果我想使用当前的DateTime,我会传递null。但是:如果我花时间和精力始终专门传递null,我不妨每次都传递DateTime.Now。

问题: 有没有办法让参数DateTime zeit = DateTime.Now被接受或替换为相同的结果?

1 个答案:

答案 0 :(得分:8)

使用构造函数重载:

public Task(string von, string was, string an, DateTime zeit)
{
 ...
}

public Task(string von, string was, string an) : this(von, was, an, DateTime.Now)
{
  ...
}