繁体   English   中英

为什么在此C#.NET控制器方法中,我具有此签名?

[英]Why in this C# .NET controller method do I have this signature?

我对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,但是使用调试器后,我发现它不会更改id值。 那到底是怎么做的呢?

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

Delete();

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

您说对了= 0设置id参数的值。

但是要注意,只有在不传递该参数的情况下才这样 ,这一点很重要。

举个例子:

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

//...

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM