【发布时间】:2011-07-29 04:07:16
【问题描述】:
我想说:
public void Problem(DateTime optional = DateTime.MaxValue)
{
}
但是编译器抱怨 DateTime.MaxValue 不是编译时间常数。
DateTime.MinValue 很简单,使用 default(DateTime)
另见“How do I default a parameter to Guid.Empty in C#?”
我不想使用方法重载,因为我要驯服的方法有 101 个参数!
【问题讨论】:
-
@Sam Holder 但是一个 8.5k 的 OP 怎么会在他的方法中有 101 个参数呢?我从来没有发生过这种情况。我真的很想知道为什么这似乎是最好的设计。那里似乎有一种疯狂的耦合程度。直觉上,如果你用这样的方法获得好的
code metrics,我会感到惊讶。 -
@Sam Holder 引用 Jerry Seinfeld 的话:“如果你的 T 恤上满是血迹,那么现在洗衣服可能不是你最大的问题”。 DateTime 问题似乎与参数问题无关。
-
@Simen 好吧,101 个参数可以以多种方式出现。遗留系统;由于缺乏重构时间(从而产生技术债务)而扩展行为的开发团队;当然,就像这种情况一样,是大规模的讽刺。另外,是什么让你觉得这 101 个参数是他干的?
-
@Adam 我无意责怪任何人。我宁愿指出 - 就个人而言 - 我会尝试在 OP 描述的场景中重构代码,而不是试图使日期时间适合。也许我应该开始一个单独的问题线程来寻找我的“方法签名中的 101 个参数是否是正确的编程实践?”的答案?
-
@Simen:别费心了……这从来都不是正确的编程习惯。没有人提出这一点。他们只是说,最终得到完全厌恶良好编程实践的代码并不是不可能。实际上,您确实提出了“OP如何”最终得到这样的代码的问题。
标签: c# c#-4.0 optional-parameters