如何在C#中将参数默认为DateTime.MaxValue?
我想说:
public void Problem(DateTime optional = DateTime.MaxValue)
{
}
但编译器抱怨DateTime.MaxValue不是编译时间常量。
DateTime.MinValue很简单,只需使用default(DateTime)
另请参阅“如何在C#中将参数默认为Guid.Empty?”
我不希望使用方法重载,因为我试图驯服的方法有101个参数!
我会用这个替代这样的东西:
public void Problem(DateTime? optional = null)
{
DateTime dateTime = optional != null ? optional.Value : DateTime.MaxValue;
// Now use dateTime
}
根据你的评论之一,你正在试图使一个方法有101个参数更适用于呼叫者。
我强烈建议您创建一个参数类并使用默认值初始化该类的属性。 为只接受一个参数的方法提供重载:参数类。
这将真正提高您的方法的使用率,因为如果用户只需要更改一个参数,甚至可以重用其参数类实例。
你要做的事情根本不可能。 DateTime.MaxValue
不是编译时常量; 它实际上是一个只读字段,它在运行时由静态构造函数初始化。 这种差异在这里变得非常重要。 可选参数需要编译时常量,因为它们直接将值烘焙到代码中。
然而,真正的问题是你的方法需要101个参数。 我从来没有见过任何响亮的声音为重构而哭泣。 相反,我的建议是改变你的方法来接受一个类的实例。 这也将为您在指定类的各个属性的默认值方面提供更大的灵活性。 特别是,您可以指定不是编译时常量的值。
链接地址: http://www.djcxy.com/p/21227.html上一篇: How do I default a parameter to DateTime.MaxValue in C#?