您的位置:首页 > 编程语言 > C#

C#4.0 命名参数可选参数

2012-09-15 23:48 225 查看
  c#4.0中新特性之一就是:命名参数和可选参数。

命名参数:调用方法时,可以不按位置传递参数,而是指定参数的命名来传值;

private void Func(string str,int number,bool flag){}

对于上面的函数,使用命名参数调用时可以是 Fun(flag:true,number:10,str:“zhangsan”);

可选参数:声明方法中的参数时,可以为其设置默认值,那么在调用该方法时,这种可选参数是可以忽略的;必须遵循以下几个原则:

     1.可选参数必须有个编译时常量作为其默认值。如果是除String之外的引用类型(包括那个特殊的dynamic类型),默认值只能是null。

      private void Func(string str,int a=10,People p=new People())这个声明是编译不过的;

     2.可选参数必须在非可选参数之后出现,可选参数右边的参数(如果有的话)必须是可选参数。

      private void Func(string str,int a=10,bool flag)这个声明也是编译不过的;

以 private void Func(string name, int age = 10, bool sex = false) {///do something; }为例说明对命名参数和可选参数的调用方法:

this.Func("zhangSan");//忽略全部可选参数
this.Func(sex: true, age: 30, name: "zhangsan");//采用命名参数,可以调换顺序;
this.Func("zhangsan", 20);//使用依次使用前面可选参数,可以不加可选参数名称;
this.Func("zhangsan", 30, true);//使用全部可选参数,可以不加可选参数名称;
this.Func("zhangsan", sex: false);//使用后面的可选参数,则必须使用可选参数名称;this.Func("zhangsan", false);是编译不了的;
this.Func("zhangsan", age: 40);

以上调用方式都正确;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: