可选参数
我有一个需要一堆可选参数的方法,并且我正在重载该方法以提供不同的签名组合。 智能感知会弹出一堆不同的签名,但我认为它现在看起来很混乱,因为我需要提供不同的组合,而不仅仅是在方法签名末尾构建参数。
我是否应该不重载我的方法并坚持一个签名,以便我的方法的用户必须传递空值? 它会使签名更清晰,但会使调用代码看起来更混乱。
I've got a method that takes a bunch of optional parameters and I'm overloading the method to supply the different combinations of signatures. Intellisense pops up with a bunch of different signatures but I think it looks quite confusing now because there are different combinations I need to provide, not just building up parameters on the end of the method signature.
Should I just not overload my method and stick to one signature so that the user of my method has to pass in nulls? It would make the signature clearer but makes the calling code look messier.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您是否仅限于使用 C# 1-3? C# 4 支持可选参数和命名参数...
在那之前,您可能应该坚持重载或创建一个具有可变属性的单独类,例如
这都可以完成如果您想要在一条语句中...并且某些属性是必需的,则可以在 FooOptions 中创建一个接受所有属性的构造函数。
在 C# 4 中,您可以这样写:
如果构造函数被编写为
命名参数和可选参数,那么在 C# 4 中构造具有可选属性的不可变类型会变得更加容易:)
Are you restricted to using C# 1-3? C# 4 supports optional parameters and named arguments...
Until then, you should probably either stick with overloading or create a separate class with mutable properties, e.g.
That can all be done in one statement if you want... and if some of the properties are mandatory, then create a single constructor in
FooOptions
which takes all of them.In C# 4 you'd be able to write:
if the constructor was written as
Named arguments and optional parameters should make it a lot easier to construct immutable types with optional properties in C# 4 :)
考虑一下 C# 方法的 params 参数。
Think about params argument of c# method.
如果函数定义仅在长度上有所不同(而不是顺序,否则这不会是最好的方法)。然后在函数中,您可以根据参数输入设置所需的值
You could use the params keyword if the function definitions only vary in length (and not order, otherwise this wont be the best approach).Then in the function you can setup the values you need based on the parameter input