Cha*_*lie 1 .net c# optional-parameters
我有一个方法,需要一堆可选参数,我正在重载方法,以提供不同的签名组合.Intellisense弹出一堆不同的签名,但我认为它现在看起来很混乱,因为我需要提供不同的组合,而不仅仅是在方法签名的末尾建立参数.
我应该不重载我的方法并坚持一个签名,以便我的方法的用户必须传入空值?它会使签名更清晰,但会使调用代码变得更加混乱.
您是否仅限于使用C#1-3?C#4支持可选参数和命名参数......
在那之前,你应该要么超载坚持或者创建具有可变的特性,例如单独的类
FooOptions options = new FooOptions { Name="Jon", Location="Reading" };
Foo foo = new Foo(options);
Run Code Online (Sandbox Code Playgroud)
如果你想要的话,这一切都可以在一个语句中完成......如果某些属性是必需的,那么创建一个构造函数,FooOptions其中包含所有这些属性.
在C#4中你可以写:
Foo foo = new Foo(name: "Jon", location: "Reading");
Run Code Online (Sandbox Code Playgroud)
如果构造函数是作为
public Foo(string name,
int age = 0,
string location = null,
string profession = null)
Run Code Online (Sandbox Code Playgroud)
命名参数和可选参数应该使得在C#4中使用可选属性构造不可变类型变得容易得多:)