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 从:
确实很好填料在一个轻松地搜索和查找样本格式的内容很多的工作。