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

标签 c# parameters default timespan c#-7.0

<分区>

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
}

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

相关文章:

c# - 如何在 C# 中使用 SMO 获取 SQL 数据库备份文件的数据和日志文件路径

JSF 传递参数并重定向到 View 范围

函数的 JavaScript 默认参数

c# - 使用 Linq Select 创建新的继承对象

c# - 如何将字符串数组从 AngularJS 传递到 C# web api?

c# - 我应该在 Debugger.Break 或 Debug.WriteLine 之前检查 Debugger.IsAttached 吗?

java - 在一个变量中引用方法的参数

sql - Delphi null 参数在哪里

c++ - 类的函数声明后的 "default"是什么意思?

Android 相当于 iPhone 的默认图像