我可以将 TimeSpan 用作具有默认值的可选参数吗?

Can I use a TimeSpan as an optional parameter with a default value?

C# 4.0 的答案不再有效。 <-- (对不起,这是错误的)

如何将 TimeSpan 用作具有默认值的可选参数?

public static Foo(string myString, TimeSpan maxWait = TimeSpan.FromSeconds(1))
{
    // do something
}

使用这段代码我得到错误:

default parameter must be a compile-time constant

这在任何 C# 版本中都不起作用。默认值必须是常量。您必须创建一个重载来默认值,或者如果值为 null.

则使其可为空并默认它

选项 1:

public static Foo(string myString)
{
    Foo(myString, TimeSpan.FromSeconds(1));
}

public static Foo(string myString, TimeSpan maxWait)
{
    // do something
}

选项 2:

public static Foo(string myString, TimeSpan? maxWait = null)
{
    TimeSpan maxWaitNotNull = maxWait ?? TimeSpan.FromSeconds(1);
    // do something
}