c# - 值的默认参数必须是编译时常量?

标签 c# .net parameters

这是我的方法签名。在尝试将 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/

相关文章:

使用 BouncyCaSTLe 使用 SHA-256 和 ECDSA 的 C# 签名数据每次都会产生不同的签名

c# - 高架赛车游戏中的汽车/车辆在拐角处漂移

c# - 使用 Entity Framework 的 Struct 变通方法,Code-First 方法

c# - 从字符串中删除转义字符 "\"

c# - 使用 c# 和 mysql 更新表

.net - Postman 客户端凭据流与 Azure AD 保护资源

.net - System.Speech 语音合成器的奇怪问题

c# - MySQL参数不添加值

c++ - 为什么 prevInstance 存在于 WinMain 和 wWinMain 中,如果它始终为 NULL

PHP/Javascript - 将参数发布到页面,然后解析新的 html?