您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。
- 内容介绍
- 文章标签
- 相关推荐
本文共计804个文字,预计阅读时间需要4分钟。
一、简介设计方法的参数包括,可以将部分参数和全部参数分别分配默认值,在调用这些方法时,可以选择不提供部分实参,使用参数定义的默认值。此外,还可以在调用方法时,通过传递额外参数来覆盖默认值。
二、设计方法参数设置
1.分配默认值:为部分参数设置默认值,全部参数继承默认值。
2.调用选择:调用方法时,可选择不提供部分实参,使用默认值。
3.参数定义:使用参数定义的默认值,实现灵活的调用方式。
4.覆盖默认值:在调用方法时,通过额外参数覆盖默认值。
一、简介
设计方法的参数是,可以将部分参数和全部参数分配默认值,然后调用这些方法的时候可以选择不提供部分实参,使用参数定义的默认值,另外,还可以在调用方法的时候通过指定参数名称来传递实参。
二、代码案例
class Program { private static int s = 0; private static int s_n = 0; private static void Mothed(int x = 9, string s = "A", DateTime dt = default(DateTime), Guid guid = new Guid()) { Console.WriteLine("x={0},s={1},dt={2},guid={3}", x, s, dt, guid); } static void Main(string[] args) { Mothed();//等同于Mothed(9,"A",default(Datetime),new Guid()) Mothed(8, "X");//等同于Mothed(8,"X",default(Datetime),new Guid()) Mothed(5, guid: Guid.NewGuid(), dt: DateTime.Now);//等同于Mothed(5,"A",DateTime.Now,Guid.NewGuid()) Mothed(s_n++, s_n++.ToString());//等同于Mothed(0,"1",default(Datetime),new Guid()); Mothed(s: (s_n++).ToString(), x: s_n++);//等同于一下两行代码,注意此处的参数顺序无关,和形参的名称对应 //string t1="2"; //int32 t2=3; //Mothed(t2,t1,default(Datetime),new Guid()) } }
向方法传递实参时,编译器从左到右的顺序对实参进行求值。在对Mothed的第四个调用中s_n的当前默认值是0,先递增然后等于1转为string传递给s,然后继续递增到2(s_n++先使用后递增)传给x。
三、总结
1.实参可按照任意顺序传递,但命名实参必须且只能出现在实参列表尾部,如上述代码第三种调用方式。
2.可以按照名称将实参传递给没有默认值的参数。但所有必须的实参都必须传递(无论按照位置还是按照名称),编译器才能编译代码。
3.C#不允许省略逗号之间的实参,比如M(1,,DateTime.New).因为这样会造成可读性的影响,程序员将被迫去读 逗号,对于没有默认值的参数,如果想省略它们的实参,以传参数名的方式传递实参即可。
到此这篇关于C#中命名参数和可选参数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计804个文字,预计阅读时间需要4分钟。
一、简介设计方法的参数包括,可以将部分参数和全部参数分别分配默认值,在调用这些方法时,可以选择不提供部分实参,使用参数定义的默认值。此外,还可以在调用方法时,通过传递额外参数来覆盖默认值。
二、设计方法参数设置
1.分配默认值:为部分参数设置默认值,全部参数继承默认值。
2.调用选择:调用方法时,可选择不提供部分实参,使用默认值。
3.参数定义:使用参数定义的默认值,实现灵活的调用方式。
4.覆盖默认值:在调用方法时,通过额外参数覆盖默认值。
一、简介
设计方法的参数是,可以将部分参数和全部参数分配默认值,然后调用这些方法的时候可以选择不提供部分实参,使用参数定义的默认值,另外,还可以在调用方法的时候通过指定参数名称来传递实参。
二、代码案例
class Program { private static int s = 0; private static int s_n = 0; private static void Mothed(int x = 9, string s = "A", DateTime dt = default(DateTime), Guid guid = new Guid()) { Console.WriteLine("x={0},s={1},dt={2},guid={3}", x, s, dt, guid); } static void Main(string[] args) { Mothed();//等同于Mothed(9,"A",default(Datetime),new Guid()) Mothed(8, "X");//等同于Mothed(8,"X",default(Datetime),new Guid()) Mothed(5, guid: Guid.NewGuid(), dt: DateTime.Now);//等同于Mothed(5,"A",DateTime.Now,Guid.NewGuid()) Mothed(s_n++, s_n++.ToString());//等同于Mothed(0,"1",default(Datetime),new Guid()); Mothed(s: (s_n++).ToString(), x: s_n++);//等同于一下两行代码,注意此处的参数顺序无关,和形参的名称对应 //string t1="2"; //int32 t2=3; //Mothed(t2,t1,default(Datetime),new Guid()) } }
向方法传递实参时,编译器从左到右的顺序对实参进行求值。在对Mothed的第四个调用中s_n的当前默认值是0,先递增然后等于1转为string传递给s,然后继续递增到2(s_n++先使用后递增)传给x。
三、总结
1.实参可按照任意顺序传递,但命名实参必须且只能出现在实参列表尾部,如上述代码第三种调用方式。
2.可以按照名称将实参传递给没有默认值的参数。但所有必须的实参都必须传递(无论按照位置还是按照名称),编译器才能编译代码。
3.C#不允许省略逗号之间的实参,比如M(1,,DateTime.New).因为这样会造成可读性的影响,程序员将被迫去读 逗号,对于没有默认值的参数,如果想省略它们的实参,以传参数名的方式传递实参即可。
到此这篇关于C#中命名参数和可选参数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

