C# 4 default parameter values: How to assign a default DateTime/object value?

Zachary Scott picture Zachary Scott · May 24, 2010 · Viewed 93k times · Source

If DateTime is an object and default C# parameters can only be assigned compile-time constants, how do you provide default values for objects like DateTime?

I am trying to initialize values in a POCO with a constructor, using named parameters with default values.

Answer

Brian R. Bondy picture Brian R. Bondy · May 24, 2010

DateTime cannot be used as a constant but you could make it a nullable type (DateTime?) instead.

Give the DateTime? a default value of null, and if it is set to null at the start of your function, then you can initialize it to any value you want.

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

    //...
}

You can call it with a named parameter like this:

test(dt: new DateTime(2010, 03, 01));

And with the default parameter like this:

test();