我有一个方法需要一堆可选参数,并且我重载了提供签名不同组合的方法。智能感知弹出一堆不同的签名,但我认为现在看起来很混乱,因为我需要提供不同的组合,而不仅仅是在方法签名的末尾建立参数。可选参数
我应该只是不超载我的方法,并坚持一个签名,以便我的方法的用户必须通过空值?这会使签名更清晰,但使调用代码看起来更加混乱。
我有一个方法需要一堆可选参数,并且我重载了提供签名不同组合的方法。智能感知弹出一堆不同的签名,但我认为现在看起来很混乱,因为我需要提供不同的组合,而不仅仅是在方法签名的末尾建立参数。可选参数
我应该只是不超载我的方法,并坚持一个签名,以便我的方法的用户必须通过空值?这会使签名更清晰,但使调用代码看起来更加混乱。
您是否仅限于使用C#1-3? C#4支持可选参数和命名参数...
在那之前,你应该要么棒超载或创建具有可变的特性一个单独的类,例如
FooOptions options = new FooOptions { Name="Jon", Location="Reading" };
Foo foo = new Foo(options);
这都可以在一个声明,如果你想要做......如果某些属性是强制性的,然后创建FooOptions
一个构造函数这需要所有的人。
在C#4你可以写:
Foo foo = new Foo(name: "Jon", location: "Reading");
如果构造被写成
public Foo(string name,
int age = 0,
string location = null,
string profession = null)
命名参数和可选参数应该让人们更方便构建稳定的类型在C#4中有可选属性:)
想一想c#方法的params参数。
void test(params object []arg) {
..
}
几乎可以肯定是错误的方法:除非所有参数都是相同的类型,否则会失去类型安全性,并且会失去关于哪个参数意味着什么的任何线索。 – 2009-07-30 14:49:42
你可以使用params keyword如果函数定义仅在长度上变化(而不是命令,否则这不会是最好的方法)。然后在功能,您可以设置的值,您需要根据参数输入
是的,在C#2恐怕,必须等待C#4和可选参数。 – Charlie 2009-07-30 14:49:24
是的,这将非常方便 – SwDevMan81 2009-07-30 14:51:44