为什么在这个C#.NET控制器方法中我有这个签名吗?

时间:2014-06-17 13:51:18

标签: c# asp.net .net asp.net-mvc

我对C#.NET很陌生,我有以下疑问。

在我正在处理的页面上,我找到了以下链接:

<a class="ui-btn-inline ui-btn ui-icon-delete ui-btn-icon-notext ui-corner-all" href="@Url.Action("Delete", "Groups", new { id = item.gruppoId })">Delete</a>

此链接在 GroupsController 类上调用 Delete()方法。

好的,这是这个方法:

public ActionResult Delete(int id = 0)
{
    .......................
    .......................
    .......................
    DO SOME STUFF
    .......................
    .......................
    .......................
    return View(model);
}

我的疑问与此方法的签名有关:为什么参数 int id = 0

= 0 是什么意思?首先,我认为这是一个简单的初始化,它将it值更改为0,但使用debbugger我发现它不会更改id值。那究竟是什么呢?

2 个答案:

答案 0 :(得分:8)

它被称为可选参数。这意味着您可以不带参数调用该方法,如下所示:

Delete();

如果您这样做,函数中id参数的值将为0

答案 1 :(得分:3)

您说= 0设置id参数的值是正确的。

但重要的是要注意,当你没有传递那个参数时它只会

以例如:

public void SaySomething( var something = "Hello" )
{
    Console.WriteLine( something );
}

//...

SaySomething();
SaySomething("I am sleeping.");

对函数的第一次调用不传递参数。因此,默认值"Hello"用于写入控制台。

第二个调用已经为参数设置了一个值,因此它不会被您设置的默认值覆盖。在这种情况下将打印"I am sleeping."