C# 4.0 中的可选参数

C# 4.0 中的可选参数

C# 4.0 现在支持使用可选参数的方法、 构造函数和索引器 (注: VB 有一段时间内支持可选参数)。

 

默认值指定作为声明的一部分时,参数是可选的。  为例,下面的方法使用两个参数 — — 一个"类别"字符串参数和"pageIndex"整数参数。  "pageIndex"参数有默认值为 0,并且因此是一个可选的参数:

 

 

调用上述方法时我们可以明确向其传递两个参数:

 

 

或者,我们可以省略通过第二个可选参数 – 0 例默认值将传递的:

 

 

请注意 VS 2010's Intellisense 指示时的参数是可选的以及它的默认值是显示语句完成时:

 


命名的参数和 C# 4.0 中的可选参数

C# 4.0 现在还支持"命名参数"的概念。  这使您可以显式命名的参数要传递到方法 – 而不是只按位置参数识别它。 

 

为例,我可以编写显式确定第二个参数传递给 GetProductsByCategory 方法按名称 (使其使用情况稍微显式) 以下代码:

 

 

要传递的到来非常有用的一种方法支持多个的可选参数,并且您想要指定哪些参数的命名的参数。  例如下面我们有一种方法使用两个可选参数中的 DoSomething

 

 

我们可以使用命名的参数中的任何调用上述方法,下面的方法:

 

 

是可选两个参数中只有一个 (或零) 参数指定位置然后例非指定的任何参数的默认值传递。


ASP.NET MVC 2 和可选参数

ASP.NET MVC 2 的输入的绑定支持给操作控制器类上的方法,我们现在可以利用的 VB 和 C# 的可选参数支持的一个很好的使用情况。

 

为例,请考虑要将像"产品/浏览/饮料"或产品/浏览/沙漠的 url 映射到一个控制器操作方法的方案。  我们可以这样通过编写一个 URL 路由映射到一个方法 url 像这样的规则:

 

 

然后我们才能还可以使用"页面"querystring 值表示浏览法显示的结果应该分页 –,那么应显示哪个页面的结果。  例如: /Products/Browse/Beverages 吗? 页面 = 2。

 

ASP.NET MVC 1 你会通常通过添加"页"参数到操作方法处理这种情况下,并使其 可为空值 int (这意味着如果"页面"querystring 值不存在,则将为空)。  你可以写代码喜欢下面,将 可为空值 int 转换为 int – 并为其分配一个默认值,如果它不存在 querystring 然后:

 

 

ASP.NET MVC 2 您现在可以利用 VB 和 C# 中,表示此行为,更简明、 清晰的可选参数支持。  只需将操作方法参数声明为一个可选的参数,默认值为:

 

C#

 

 

VB

 

 

"页面"值是否存在于 querystring (例如 /Products/Browse/Beverages 吗? 页面 = 22) 然后它将传递给操作方法为一个整数。  如果"页面"的值不是在查询字符串 (例如 /Products/Browse/Beverages) 将到操作方法传递,默认值为 0。  这使代码更简明、 易读。


摘要

有大量的 C# 和 VB 与 VS 2010 来出色的新语言功能。  上述的两个功能 (可选参数和命名的参数),不过其中两人。  有关更多星期和未来几个月中的博客,我是会的。

 

如果要寻找一本好书,总结了 C# (包括 C# 4.0) 中的所有语言功能,也提供了很好的摘要,核心的.net 类库您可能还希望签出最新公布的 C# 4.0 a Nutshell 中 书,O'Reilly 从:

 

 

确实很好填料在一个轻松地搜索和查找样本格式的内容很多的工作。

posted @ 2010-11-25 20:09  肚肚  阅读(668)  评论(0编辑  收藏  举报