• C#中的 具名参数 和 可选参数


    具名参数 和 可选参数 是 C# framework 4.0 出来的新特性。

    一. 常规方法定义及调用

    public void Demo1(string x, int y)
    { 
          //do something...
    }
    
    
    public void Main()
    {
          //调用
           Demo1("similar", 22);
    }

    调用时,参数顺序(类型)必须与声明一致,且不可省略。

    二. 可选参数的声明及调用

    可选参数分为两种情况: 1. 部分参数可选;   2. 全部参数都是可选

    //部分可选(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 之后),不然会出现如下错误提示:

    //全部可选(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都传入实参
    }

    分先后。

           b. 参数声明定义可以无顺序,但调用时必须与声明时的一致。

    上面的调用只写的3种,其实还有一种,就是 x 使用默认值,y 传入实参,即 :  Demo3(10);

    但这样调用会报错,因为Demo3的第一个参数是 string 类型,错误消息如图:

    但是现在我只想传入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中会有智能提示,提示哪些是可以选参数及其默认值,中括号表示可选[]:

    以上图片由“图斗罗”提供

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/ldyblogs/p/parameter.html
Copyright © 2020-2023  润新知