如果我们有两种方法,一种是按值返回变量,另一种是按引用返回,哪个性能最高?
myObj.Method1(out var);
或者
var = myObj.Method2();
我想第一个版本效率更高,但是,这是否意味着您应该始终构建通过引用返回值的方法?或者有什么理由按值返回变量?
谢谢。
如果我们有两种方法,一种是按值返回变量,另一种是按引用返回,哪个性能最高?
myObj.Method1(out var);
或者
var = myObj.Method2();
我想第一个版本效率更高,但是,这是否意味着您应该始终构建通过引用返回值的方法?或者有什么理由按值返回变量?
谢谢。
性能差异将非常小或不存在。
您错误地假设这两个版本具有不同的语义。
对于引用类型,这两种方法都将复制一次引用。
对于大值类型,out参数可以更快,因为您不需要单独的临时本地。
总是在下结论之前进行测量!
out除非您需要返回 2 个值,否则不要使用参数。
只要它们是引用类型,就绝对没有性能差异。
顺便说一句,如果您定义您的方法以使其返回一个值,那么这将不是按值。除非类型是值类型,否则返回类型始终是通过引用。
引用类型(类)几乎没有区别,因为在这两种情况下,它的值都是通过引用返回的。
对于值类型(结构),如果类型包含许多字段,则可能会有所不同,在这种情况下,使用out参数返回会更快一些。