按价值或参考价值返回?

时间:2011-01-30 21:03:17

标签: c# return-value ref

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

myObj.Method1(out var);

var = myObj.Method2();

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

感谢。

3 个答案:

答案 0 :(得分:6)

性能差异将无法估量小或不存在。

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

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

除非您需要返回2个值,否则请勿使用out个参数。

答案 1 :(得分:4)

只要它们是引用类型,就绝对没有性能差异。

顺便说一下,如果你定义你的方法以便它返回一个值,那么就是值。除非类型是值类型,否则返回类型始终是引用。

答案 2 :(得分:1)

引用类型(类)几乎没有区别,因为在这两种情况下,它都是通过引用返回的。

对于值类型(结构),如果类型包含许多字段,则可能存在差异,在这种情况下,使用out参数返回的速度会快一些。