当C#函数参数包含`= null`时,它意味着什么?

时间:2015-06-26 20:56:40

标签: c# .net optional-parameters

我正在浏览MVC tutorial并在函数开头看到这行代码:

private void PopulateDepartmentsDropDownList(object selectedDepartment = null)

测试后,我可以看到该功能有效,但我不明白 函数参数是如何工作的。 object selectedDepartment = null做了什么?

我已经完成了一般的互联网搜索,但还没有找到答案。

我想我的问题确实有两个方面:

  1. 参数的= null部分有什么作用?
  2. 是否可以完成,但不一定应该吗?

4 个答案:

答案 0 :(得分:5)

  1. 这意味着该参数将为null,除非您决定传递某些内容。换句话说,它是可选的。

  2. 可以做到,并没有任何问题。它很常见。

答案 1 :(得分:1)

这意味着您可以致电

PopulateDepartmentsDropDownList()

PopulateDepartmentsDropDownList("something")  

因为编译器会将第一个转换为

PopulateDepartmentsDropDownList(null)

此功能称为Optional Arguments

我建议你阅读this blog post

答案 2 :(得分:1)

= null是参数的默认值,它是功能等同的,就像你有

一样
private void PopulateDepartmentsDropDownList()
{
    PopulateDepartmentsDropDownList(null);
}

private void PopulateDepartmentsDropDownList(object selectedDepartment)
{
     //Your code here.
}

因此,如果您可以调用没有参数PopulateDepartmentsDropDownList()的函数,它将调用1个参数版本并传入null。

答案 3 :(得分:0)

这会将参数设置为默认值(如果未提供),并在未提供参数时防止编译时错误。参见:

Setting the default value of a C# Optional Parameter

基本上这个参数现在是可选的,所以你可以用以下两种方式之一调用函数:

PopulateDepartmentsDropDownList() //selectedDepartment will be set to null as it is not provided

PopulateDepartmentsDropDownList(myObject) //selectedDepartment will become myObject