可选参数,可选参数与签字参数

2019-05-03 22:24 来源:未知

可选参数

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

图片 1

具名参数 和 可选参数 是 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 之后),不然会出现如下错误提示:

图片 2

//全部可选(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 类型,错误消息如图:

图片 3

但是现在我只想传入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使用实参)。

 

注: 当使用 具名参数时,调用方法可以不用管参数的声明顺序,即如下调用方式也是可以的:

图片 4

在调用含有可选参数的方法时,vs中会有智能提示,提示哪些是可以选参数及其默认值,中括号表示可选[]:

图片 5

图片 6

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

具名参数 和 可选参数, 具名参数 和 可选参数 是 C# framework 4.0 出来的新特性。 一. 常规方法定义及调用 public void Demo1( string x, int...

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

static void test1()
{
    func1("A");
    func1("B", 30);
    Console.ReadKey();
}
static void func1(string name, int age = 20)
{
    Console.WriteLine("Name: "   name   "t Age: "   age);
}

 

具名参数

一. 常规方法定义及调用

static void test2()
{
    func2("C", 40);
    func2(age: 50, name: "D");
    Console.ReadKey();
}
static void func2(string name, int age)
{
    Console.WriteLine("Name: "   name   "t Age: "   age);
}

图片 7

可选参数与具名参数结合

public void Demo1(string x, int y)
{ 
      //do something...
}


public void Main()
{
      //调用
       Demo1("similar", 22);
}
static void test3()
{
    func3("E");
    func3("F", 10, false);
    func3("G", 15);
    func3("H", isMale: false);
    Console.ReadKey();
}
static void func3(string name, int age = 20, bool isMale = true)
{
    Console.WriteLine("Name: "   name   "t Age: "   age   "t IsMale: "   isMale);
}

图片 8

 

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

 

 

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

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

图片 9

//部分可选(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
}

图片 10

注: 当参数为部分可选时, 可选参数  的声明必须定义在 不可选参数 的后面(如上: y 的声明在 x 之后),不然会出现如下错误提示:

图片 11

 

 

图片 12

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

图片 13

注: a.  当参数全部都为可选时,参数的声明顺序可以随意定义,不分先后。

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

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

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

图片 14

 

但是现在我只想传入y, 不想传入 x ,该怎么办呢,那么就要用到 C#的 具名参数。

 

 

三. 具名参数

具名参数的使用主要是体现在函数调用的时候。

图片 15

public void Main()
{
       //调用
       Demo3();                // x,y不传入实参时,x,y使用默认值 "demo",5
       Demo3("similar");       // y不传入实参时,y使用默认值5
       Demo3("similar", 10);   // x,y都传入实参


       // 具名参数的使用
       Demo3(y:10);
}

图片 16

 

通过具名参数,我们可以指定特定参数的值,这里我们通过 Demo3(y:10)就可以解决我们上面遇到的问题(x使用默认值,y使用实参)。

 

注: 当使用 具名参数时,调用方法可以不用管参数的声明顺序,即如下调用方式也是可以的:

图片 17

 

 

在调用含有可选参数的方法时,vs中会有智能提示,提示哪些是可以选参数及其默认值,中括号表示可选[]:

图片 18

 

 

摘自:

similar  

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

版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于网络编程,转载请注明出处:可选参数,可选参数与签字参数