当C#函数参数包含“=null”时,这意味着什么

本文关键字:什么 意味着 null 函数 参数 包含 | 更新日期: 2023-09-27 17:59:54

我正在学习MVC教程,并在函数开头看到这行代码:

private void PopulateDepartmentsDropDownList(object selectedDepartment = null)

测试后,我可以看到函数的工作原理,但我不明白函数参数是如何工作的。object selectedDepartment = null做什么?

我在互联网上做了一个普通的搜索,但还没有找到答案。

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

  1. 参数的= null部分做什么
  2. 是不是可以,但不一定应该

当C#函数参数包含“=null”时,这意味着什么

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

  2. 这是可以做到的,没有错。这是很常见的做法。

这意味着您可以调用

PopulateDepartmentsDropDownList()

PopulateDepartmentsDropDownList("something")  

两者都是因为编译器会将第一个转换为

PopulateDepartmentsDropDownList(null)

此功能称为可选参数

我建议你阅读这篇博客文章

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

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

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

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

设置C#可选参数的默认值

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

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

PopulateDepartmentsDropDownList(myObject) //selectedDepartment will become myObject