具名参数 和 可选参数 是 C# framework 4.0 出来的新特性。html
一. 常规方法定义及调用函数
public void Demo1(string x, int y) { //do something... } public void Main() { //调用 Demo1("similar", 22); }
调用时,参数顺序(类型)必须与声明一致,且不可省略。post
二. 可选参数的声明及调用ui
可选参数分为两种状况: 1. 部分参数可选; 2. 所有参数都是可选this
//部分可选(x为必选,y为可选) public void Demo2(string x, int y = 5) { //do something... } public void Main() { //调用 Demo2("similar"); // y不传入实参时,y使用默认值5 Demo2("similar", 10); // y传入实参,则使用实参10 }
注: 当参数为部分可选时, 可选参数 的声明必须定义在 不可选参数(命名参数)的后面(如上: y 的声明在 x 以后),否则会出现以下错误提示:spa
//所有可选(x,y 均为可选参数) public void Demo3(string x = "demo", int y = 5) { //do something... } public void Main() { //调用 Demo3(); // x,y不传入实参时,x,y使用默认值 "demo",5 Demo3("similar"); // y不传入实参时,y使用默认值5 Demo3("similar", 10); // x,y都传入实参 }
注: a. 当参数所有都为可选时,参数的声明顺序能够随意定义,不分前后。code
b. 参数声明定义能够无顺序,但调用时必须与声明时的一致。htm
上面的调用只写的3种,其实还有一种,就是 x 使用默认值,y 传入实参,即 : Demo3(10);blog
但这样调用会报错,由于Demo3的第一个参数是 string 类型,错误消息如图:ci
可是如今我只想传入y, 不想传入 x ,该怎么办呢,那么就要用到 C#的 具名参数。
三. 具名参数
具名参数的使用主要是体如今函数调用的时候。
public void Main() { //调用 Demo3(); // x,y不传入实参时,x,y使用默认值 "demo",5 Demo3("similar"); // y不传入实参时,y使用默认值5 Demo3("similar", 10); // x,y都传入实参
// 具名参数的使用 Demo3(y:10); }
经过具名参数,咱们能够指定特定参数的值,这里咱们经过 Demo3(y:10)就能够解决咱们上面遇到的问题(x使用默认值,y使用实参)。
注: 当使用 具名参数时,调用方法能够不用管参数的声明顺序,即以下调用方式也是能够的:
在调用含有可选参数的方法时,vs中会有智能提示,提示哪些是能够选参数及其默认值,中括号表示可选[]: