重新分配参数(本地)是否不合适?

sha*_*non 0 c# parameters variable-assignment

C#社区是否存在修改参数的广泛厌恶?例如,一个流行的样式检查器会抱怨下面的参数重新分配方面吗?

public void Create(Template template = null) {
    if (template == null) template = GetDefaultTemplate();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

对此的替代方案如下,但假设代码块适当小,则可能不是更清楚:

public void Create(Template template = null) {
    var theActualTemplate = template ?? GetDefaultTemplate();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我为这个肯定已经厌倦/已经回答的问题道歉,但奇怪的是我找不到任何东西.我试着查看一些C#样式指南(包括这里的所有指南:c#的样式指南?),但没有发现这个问题.也许这不是问题?

如果您有相对权威的来源,我很乐意听到.

Kna*_*ģis 6

在您的示例中,您只是在方法范围内修改变量.由于这是你的局部变量,你的方法可以随心所欲地做它 - 它不会影响调用者.通常,最好使用相同的变量,因为它使代码更容易维护 - 如果创建新变量,则会增加意外使用错误的变量并获得NullReferenceException的风险.

如果您ref只使用关键字,那么分配将影响调用者.