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#?),但没有发现这个问题。也许这不是问题?
如果您有相对权威的来源,我很乐意听到。
答案 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
作为参考类型的默认值可以帮助您为参数定义默认对象。