【问题标题】:Can I use a TimeSpan as an optional parameter with a default value? [duplicate]我可以使用 TimeSpan 作为具有默认值的可选参数吗? [复制]
【发布时间】:2017-09-09 06:17:23
【问题描述】:

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

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

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

使用此代码我得到错误:

默认参数必须是编译时常量

【问题讨论】:

  • “C# 4 的答案不再适用”是什么意思?
  • @EvK 我错过了另一个 SO 示例中的 ?。因此它没有用。 :/ 因此我关闭了这篇文章。

标签: c# parameters default timespan c#-7.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 2011-02-17
    • 2016-09-30
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    相关资源
    最近更新 更多