【问题标题】:DateTime.Now in class constructorDateTime.Now 在类构造函数中
【发布时间】:2014-01-13 07:54:51
【问题描述】:

大家好。
我正在研究处理任务的东西。
每个任务由 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 对象的内存需求始终相同,并且该线程说问题是该调用的未知堆需求。@ 987654321@
我已经有了解决方法的想法(见下文),但众所周知,解决方法不是最佳实践

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 被接受或替换为相同的结果?

【问题讨论】:

    标签: c# datetime constructor constructor-overloading


    【解决方案1】:

    改用构造函数重载:

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

    【讨论】:

    • 谢谢,我会试一试。这提供了我想要的界面,而它的工作方式有点像我自己的解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2017-01-21
    • 2011-12-07
    • 2019-03-14
    • 2021-11-11
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多