zoukankan      html  css  js  c++  java
  • C#4.0 命名参数可选参数

      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);

    以上调用方式都正确;

  • 相关阅读:
    [转]三维成像原理
    loader如果你提前设width或height,loadComplete后显示不出来
    Flash调用Alchemy编译的代码时出现Error #1506的解决
    通过 IP 区分不同国家的用户
    Linux的进程组和会话
    Linux下安装 JDK(转备忘)
    程序中,调用Bison和Flex结合的小例子(语法分析中处理数据)
    从自己的程序中使用lex的一个小例子
    yum 删除软件要注意一点
    Linux下top命令
  • 原文地址:https://www.cnblogs.com/rpoplar/p/2687110.html
Copyright © 2011-2022 走看看