c# - DateTime.Now 在类构造函数中

标签 c# datetime constructor constructor-overloading

大家好。
我正在研究处理任务的东西。
每个任务由 3 个字符串和一个 DateTime 对象组成

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

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

编译时出现编译错误

“zeit”的默认参数值必须是编译时常量 (CS1736)

我假设问题是,-obvioulsy- DateTime.Now 的值取决于调用构造函数的时间,这就是我想要在这里说明的全部要点。

我已经查看了 [this] 线程,但它并不真正适用于我,因为 DateTime 对象的内存需求始终相同,并且该线程表示问题是该调用的未知堆需求。 1
我已经有了变通办法的想法(见下文),但众所周知,变通办法不是最佳实践

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

最佳答案

改用构造函数重载:

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

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

关于c# - DateTime.Now 在类构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21086299/

相关文章:

c# - 从字符串创建日期时间而不应用时区或夏令时

c# - 是否有一种通用的 DDD 模式来处理域对象的欠载?

c# - .NET Framework 外部方法源代码

c# - 是否可以从 C# 4.0 中的列表应用数学运算

c# - 当这种情况发生时如何通知一个人?

c# - C# 中的 Java System.currentTimeMillis() 等效项

c++ - 根据用户输入的天数计算生日

java - @Value 注解不从属性文件中注入(inject)值

javascript - 将服务器端数据输入 JavaScript 对象构造函数

c++ - 在构造函数 C++ 中初始化引用