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

时间:2013-11-20 13:31:06

标签: c# parameters variable-assignment

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

public void Create(Template template = null) {
    if (template == null) template = GetDefaultTemplate();
    // ...
}

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

public void Create(Template template = null) {
    var theActualTemplate = template ?? GetDefaultTemplate();
    // ...
}

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

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

2 个答案:

答案 0 :(得分:6)

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

如果您仅使用ref关键字,则分配将影响来电者。

答案 1 :(得分:1)

当您需要为引用类型设置默认值时,它非常有用,因为您无法像对值类型那样真正指定它。

public void Create(int templateId = 1) {
    // this will compile
    // ...
}

 public void Create(Template template = GetDefaultTemplate()) {
    // this WON'T compile
    // ...
}

使用null作为参考类型的默认值可以帮助您为参数定义默认对象。