use*_*895 6 c# optional-parameters named-parameters
这不是关于正确编码实践的问题,我只是在研究语义.假设我有以下构造函数......
public FooClass(string name = "theFoo")
{ fooName = name; }
public FooClass(string name, int num = 7, bool boo = true) : this(name)
{ fooNum = num; fooBool = boo; }
Run Code Online (Sandbox Code Playgroud)
因此可以使用命名参数......?
FooClass foo1 = new FooClass(num:1);
Run Code Online (Sandbox Code Playgroud)
//我只传递一个命名参数,依靠选项来处理其余的事情
或者没有参数调用构造函数FooClass(string,int,bool)?如......
FooClass foo2 = new FooClass();
Run Code Online (Sandbox Code Playgroud)
使用命名和可选参数会以下列方式影响重载解析:
一种方法,索引器,或构造为执行一个候选它的每一个参数的任是可选的还是对应,通过名称或位置,以便在调用语句的单个参数,并且参数可以被转换成参数的类型.
如果找到多个候选项,则首选转换的重载解析规则将应用于显式指定的参数.忽略可选参数的省略参数.
如果判断两个候选者同样好,则优先选择没有可选参数的候选者,该参数在调用中被省略.这是对具有较少参数的候选者的重载分辨率的一般偏好的结果.
http://msdn.microsoft.com/en-us/library/dd264739.aspx
| 归档时间: |
|
| 查看次数: |
18136 次 |
| 最近记录: |