当您有一个带有out参数的函数时,最佳做法是在函数内部创建一个新变量,并在函数末尾为其分配out参数?或在开头给out参数一个空/默认值,然后在整个函数中进行修改。
关于这些编码样式/实践之一为何更好使用,我正在尝试提出一些推理。
选项1:仅使用out参数。
public bool SomeFunc(out string outStr)
{
outStr = "";
if (errorCond)
return false;
outStr += "foo";
outStr += "bar";
return true;
}
选项2:使用临时变量。
public bool SomeFunc1(out string outStr)
{
string tempStr = "";
outStr = ""; // To prevent 'The out parameter must be set' error on return false line.
if (errorCond)
return false;
tempString += "foo";
tempString += "bar";
outStr = tempStr;
return true;
}
尽管这两个都达到了相同的结果,这是更可取的吗?其中任何一个都有缺点吗?
答案 0 :(得分:1)
实际上,没关系,您只需要在此方法中分配变量即可。 但是,最好使用to avoid using output or reference parameters:
与定义出或引用参数的成员一起工作需要 开发人员理解指针之间的细微差异 值类型和引用类型,以及初始化差异 在out和参考参数之间。
对我来说,第二个在头顶上
在方法开始时分配一个默认值,然后根据需要更改该值。
查看.net源代码中的示例,例如int.TryParse或Enum.TryParse