【发布时间】:2012-07-03 06:41:37
【问题描述】:
C# 4 引入了一个名为 named arguments 的功能,该功能在以下场景中特别有用
int RegisterUser(string nameFirst, string nameLast, string nameMiddle, string email)
有没有办法强制使用命名参数?也许某些属性适用于我不知道的方法或编译器开关?我想这可以使用代码检查器工具来完成,但只是想知道是否有其他方法。
附言
对于那些对为什么需要它以及为什么不使用类/结构来利用object initializers 感兴趣的人,在某些情况下这是不可能的。比如调用不受你控制的库或你必须遵守的奇怪的代码约定。
【问题讨论】:
-
除非您的 args 大多是可选的,否则我认为命名 args 没有多大用处。
-
@BobKaufman 我猜相反。当您编译代码时,它会“忘记”它是否被称为位置参数、命名或默认值。
-
@driis,当方法签名包含许多相同类型的参数时,调用时很容易出错。
-
所以这是您要强制执行的约定。那么我认为你应该遵循 FxCop 规则。
-
@BrunoBrant 命名参数使代码更加自我记录,因此更易于维护。例如,有多少 API 必须为行和列传入整数?我敢打赌,10 次中有 9 次,人们必须去检查方法签名以确保参数在正确的位置(编写和阅读代码的人)。命名参数使整个练习变得无关紧要。
标签: c# .net c#-4.0 named-parameters