C#4.0 具名参数 和 可选参数

C# 4.0中的可缺省参数

C# 4.0现在对方法,构造器,以及索引器支持使用可缺省的参数(注:VB支持可缺省参数可是有年头了)。

当参数的默认值作为声明的一部分被指定的时候,参数就是可缺省的。例如,下面这个方法接受2个参数,一个“category” 字符串参数,另一个“pageIndex”整数参数。“pageIndex”参数有一个默认值 0,它因此是一个可缺省的参数:

当调用上面的方法时,我们可以显式地传递2个参数给它:

或者我们可以省略掉传递第二个参数,在这样的情形下,其默认值0就会被传进去:

注意,VS 2010的Intellisense在显示语句完成时,会表示哪个参数是可缺省的,以及它的默认值:

C# 4.0中的具名实参和可缺省参数

C# 4.0现在还支持“具名实参”的概念。这允许你把传给一个方法的参数显式地命名,而不是通过实参的位置来识别它。

例如:我可以编写下面这样的代码,通过其名称来识别传给GetProductsByCategory方法的第二个参数(将其用法变得更为明确一点):

当一个方法支持多个可缺省参数,而你想要指定在传递哪个实参时,具名实参会非常有用。例如,下面我们有一个DoSomething方法,其接受2个可缺省参数:

我们可以使用具名实参,以下面任何一种方式来调用上面这个方法:

因为2个参数都是可缺省的,在只有1个(或者0个)参数被指定的情形下,那个没被指定的参数的默认值就会被传进去。

时间: 2024-10-29 04:18:28

C#4.0 具名参数 和 可选参数的相关文章

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

具名参数 和 可选参数 是 C# framework 4.0 出来的新特性. 一. 常规方法定义及调用 public void Demo1(string x, int y) { //do something... } public void Main() { //调用 Demo1("similar", 22); } 调用时,参数顺序(类型)必须与声明一致,且不可省略. 二. 可选参数的声明及调用 可选参数分为两种情况: 1. 部分参数可选:   2. 全部参数都是可选 //部分可选(x

【转】C#具名参数和可选参数

源地址:https://www.cnblogs.com/similar/p/5006705.html 另:可选参数的一个陷阱 参考:https://www.cnblogs.com/still-windows7/p/kexuancanshuxianjing.html 原文地址:https://www.cnblogs.com/haizine/p/10567291.html

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

具名参数 和 可选参数 是 C# 4.0 提出来的新特性 一,可选参数分为:部分可选.全部可选 1,声明 public class Dogs { public string Name { get; set; } public string Age { get; set; } //1,name为必选参数,age为可选参数,如果有必选参数,那么可选参数必须定义在必选参数后 //可选参数之后必然为可选参数 //如果都是可选参数,那么可以放第一位 public void Says(string name

可选参数、命名参数、.NET的特殊类型、特性

1.可选参数和命名参数    1.1可选参数        语法:            [修饰符] 返回类型 方法名(必选参数n,可选参数n)        注意:            1.必选参数可以不存在,也可以有多个:可选参数可以有1个或多个            2.可选参数必须放在必选参数之后            3.可选参数在定义时需要赋初始值            4.可选参数之间也需要使用,进行分隔            5.调用可选参数时,不能跨参数赋值    1.2命名

ylbtech-LanguageSamples-NamedAndOptional(命名和可选参数)

ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-NamedAndOptional(命名和可选参数) 1.A,示例(Sample) 返回顶部 命名和可选参数 C# 4.0 支持命名和可选参数. 此程序演示如何声明一个具有命名和可选参数的方法,以及如何通过使用参数的默认值和通过显式命名特定参数来调用该方法. 1.B,示例代码(Sample Code)返回顶部 1.B.1, Program.cs using System; using S

【工作中遇到的问题】可选参数必须为引用类型、可以为 null 的类型或声明为可选参数。 参数名: parameters

今天上班来发现收到新的报错邮件,里面出现一个新的报错. “Method(Int32, Int32, Int32, Int32, Int32, Int32, System.String, System.String)”的不可以为 null 的类型“System.Int32”的参数“param”” 我这个方法本来是要传8个参数,没有的就传默认值. 现在一看报错详情,原来是异步发来的时候,请求参数没传全. 这个时候整个人傻逼了.....为神马没传默认参数.... 正想气势冲冲的找前端去理论.这时脑袋灵

c#方法重载,可选参数,命名参数。

其实这里没什么可说哦,c++的语法大同小异.先看一段代码. class Program { public static void Test(int a) { Console.WriteLine("只有一个参数a=={0}", a); } public static void Test(int a, int b = 5) { Console.WriteLine("有两个参数a=={0},b=={1}", a, b); } static void Main() { Te

可选参数

可选参数 在 js 里,声明一个函数可以定制多个参数,与此同时,你在调用该函数的时候不需要传入所有的参数,它就能正常执行,只不过这些参数默认就是undefined而已.所以似乎 js 的函数天生就带有可选参数这个功能,只不过在你不进行定制的时候它们都具有一个 "统一" 的值罢了.但,我们也知道,除非函数里就实现了针对某个参数为undefined时的行为,让参数为undefined是比较危险的.该如何实现函数内的可选参数,我们将用 js 里的构造方法来举例(假如我们要实现一个 Perso

C#可选参数与具名参数

可选参数 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(&q