重新指定分配默认值的参数时,可以显式地为指定参数名称赋值,隐式指定的时候,是根据方法参数的顺序,靠c#编译器的推断。
代码示例:
void M(int x=9,string s="a",DateTime dt = default(DateTime))
{...}
Main()
{
M();//使用默认值
M(8,"b")://隐式指定方法参数,没有指定的使用默认值
M(6,"v",DateTime.Now);//同上
M(6,dt:DateTime.Now);//显式的指定参数名称,为指定的参数传值
}
使用的指导原则:
1、可以为方法和有参属性指定默认值
2、有默认值的参数,必须定义在没有默认值的参数之后
3、默认参数必须是常量
4、ref 和 out参数不能指定默认值