一尘不染

值的默认参数必须是编译时间常数吗?

c#

这是我的方法签名。在尝试end作为可选参数传递时,它给了我这个错误。我应该怎么做才能解决这个问题?为什么不是DateTime.MinValue常数?

public static void DatesToPeriodConverter(DateTime start, DateTime end = DateTime.MinValue,
                                          out string date, out string time)

阅读 390

收藏
2020-05-19

共1个答案

一尘不染

DateTime.MinValue不是const,因为语言不一样constDateTime。一种选择是改为使用DateTime?,即

public static void DatesToPeriodConverter(DateTime start, DateTime? end = null,
     out string date, out string time)
{
    var effectiveEnd = end ?? DateTime.MinValue;
    // ...
}

但是,在默认参数 之后 仍然存在非默认参数的问题-您可能需要重新排序它们才能将其用作默认参数。

2020-05-19