如何在C#中将参数默认为DateTime.MaxValue?

Ian*_*ose 11 c# optional-parameters c#-4.0

我想说:

public void Problem(DateTime optional = DateTime.MaxValue)
{
}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨DateTime.MaxValue不是编译时常量.

DateTime.MinValue很简单,只需使用默认值(DateTime)

另请参阅" 如何在C#中将参数默认为Guid.Empty? "

我不想使用方法重载,因为我试图驯服的方法有101个参数!

Ily*_*gan 9

我会用这个代替:

public void Problem(DateTime? optional = null)
{
   DateTime dateTime = optional ?? DateTime.MaxValue
   // Now use dateTime
}
Run Code Online (Sandbox Code Playgroud)

  • @IanRingrose您可能还想使用[null-coalescing operator](http://msdn.microsoft.com/en-us/library/ms173224.aspx)编写它,即:`DateTime dateTime = optional ?? DateTime.MaxValue;` (7认同)

Dan*_*rth 5

根据您的一条评论,您正在尝试制作一个方法,其中101个参数对调用者更有用.
我强烈建议您创建一个参数类并使用默认值初始化该类的属性.为只接受一个参数的方法提供重载:参数类.
这将真正改善您的方法的使用,因为如果用户只需要更改一个参数,他甚至可以重用其参数类实例.