C#4默认参数值:如何分配默认的DateTime /对象值?

Zac*_*ott 102 c# default-parameters

如果DateTime是一个对象,并且默认的C#参数只能被赋予编译时常量,那么如何为DateTime等对象提供默认值?

我正在尝试使用构造函数初始化POCO中的值,使用带有默认值的命名参数.

Bri*_*ndy 186

DateTime不能用作常量,但你可以使它成为可以为空的类型(DateTime?).

给出DateTime?一个默认值null,如果它设置为null函数的开头,那么你可以将它初始化为你想要的任何值.

static void test(DateTime? dt = null)
{
    if (dt == null)
    {
        dt = new DateTime(1981, 03, 01);
    }

    //...
}
Run Code Online (Sandbox Code Playgroud)

您可以使用如下命名参数调用它:

test(dt: new DateTime(2010, 03, 01));
Run Code Online (Sandbox Code Playgroud)

并使用如下默认参数:

test();
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用:`DateTime dt = default(DatetTime)` (17认同)
  • 那么DateTime.MinValue呢? (3认同)
  • @ Dr.Zim:不是它只读而不是常数. (2认同)

svi*_*ick 60

直接执行此操作的唯一方法是使用值default(DateTime),即编译时常量.或者您可以通过使用DateTime?并设置默认值来解决这个问题null.

另请参阅此相关问题TimeSpan.


con*_*cal 8

new DateTime()也等于DateTime.MinValue

你可以像这样创建一个默认参数.

void test(DateTime dt = new DateTime())
{
//...
}
Run Code Online (Sandbox Code Playgroud)