This question already has answers here:
C# 4.0: Can I use a TimeSpan as an optional parameter with a default value?

(8 个回答)


4年前关闭。




C# 4.0 的答案不再起作用。 (对不起,这是错误的)

如何使用 TimeSpan 作为具有默认值的可选参数?
public static Foo(string myString, TimeSpan maxWait = TimeSpan.FromSeconds(1))
{
    // do something
}

使用此代码,我收到错误消息:

最佳答案

这在任何 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
}

关于c# - 我可以使用 TimeSpan 作为具有默认值的可选参数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43386948/

10-17 02:45