这是我的方法签名。在尝试将 end
作为可选参数传递时,它给了我这个错误。我应该怎么做才能解决这个问题?为什么 DateTime.MinValue
不是常量?
public static void DatesToPeriodConverter(DateTime start, DateTime end = DateTime.MinValue,
out string date, out string time)
最佳答案
DateTime.MinValue
不是 const
,因为语言不喜欢 DateTime
上的 const
。一种选择是使用 DateTime?
代替,即
public static void DatesToPeriodConverter(DateTime start, DateTime? end = null,
out string date, out string time)
{
var effectiveEnd = end ?? DateTime.MinValue;
// ...
}
但是,您仍然会遇到在默认参数之后有非默认参数的问题 - 您可能需要重新排序它们以将其用作默认值。
关于c# - 值的默认参数必须是编译时常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18740421/