按价值或参考价值返回?

Puy*_*ver 3 c# ref return-value

如果我们有两个方法,一个按值返回一个变量,另一个按引用返回,哪个具有最高的性能?

myObj.Method1(out var);
Run Code Online (Sandbox Code Playgroud)

要么

var = myObj.Method2();
Run Code Online (Sandbox Code Playgroud)

我想第一个版本效率更高但是,这是否意味着你应该总是构建通过引用返回值的方法?或者有没有理由按值返回变量?

谢谢.

SLa*_*aks 6

性能差异将是无法估量的小或不存在.

您错误地认为这两个版本具有不同的语义.
对于引用类型,两种方法都只复制一次引用.

对于大值类型,out参数可以更快,因为您不需要单独的临时本地.
在得出结论之前一定要测量!

out除非您需要返回2个值,否则不要使用参数.

  • 第一种形式(out var)基本上是*一般规则*的一个例外:当你的方法*给调用者提供*数据时,这应该总是返回值,直到你必须返回多于1个参数.另外,*out*不是优选的,因为它不应该是CLS兼容的,即.CLR的新语言可能不支持这种形式的参数返回.我正在核实我关于CLS的声明是否正确... (2认同)