有时,我需要修改从方法本身内部传递到方法中的值。一个示例将在此处清除诸如此类的字符串:
void SanitizeName(string Name)
{
Name = Name.ToUpper();
//now do something here with name
}
这是完全无害的,因为该Name
参数未通过引用传递。但是,如果由于某种原因,将来开发人员决定让ref传递所有值,则对字符串进行任何清理都会影响方法外部的值,这可能会带来不利的结果。
因此,我总是像这样创建本地副本,而不是重新分配参数本身:
void SanitizeName(string Name)
{
var SanitizedName = Name.ToUpper();
//now do something here with name
}
这样可以确保更改传递的值永远不会影响方法外的操作,但是我想知道我是否对此过于偏执。
if (param == NULL) param = default_value;
?
by ref
未传递的值时,因此,出于某种原因将本地访问权转换为非本地访问权,他必须始终仔细检查后果。
Name = Name.ToUpper();
代码使Name
更改的价值更加难以理解。您的第二个示例不仅更具前瞻性,而且更容易推断其工作方式。