【发布时间】:2018-01-27 00:10:13
【问题描述】:
正如here 所见,结构通过副本传递,类通过引用传递。但是为什么使用 ref 关键字通过引用传递结构仍然比传递对类的引用要慢?
通过将struct 关键字替换为class,我的程序获得了不同的速度。所有变量都已通过 ref 关键字传递。
通过更改关键字,我的测试速度提高了 20%。既然我已经通过参考,速度不应该保持不变吗?我不明白什么?
【问题讨论】:
-
如果你能做一个最小的例子来展示你的观察结果会有所帮助,并在此处发布代码
-
使用
ref关键字传递结构对象与传递类对象不同。例如,在被调用的方法中,如果将不同的对象分配给 ref'd 参数,则调用者中的变量也指向新对象。但是如果你只是将一个类对象传递给方法,将一个新对象分配给参数不会影响调用者中的变量。查看这两种方法生成的 IL 可能对您有所帮助。 -
你读过Choosing Between Class and Struct吗?您的对象是否满足项目符号列表中提到的所有特征?我猜它不会——这可能就是你发现课程表现更好的原因。
-
感谢您的提示,我认为我仍然缺乏对 C# 工作原理的基本了解
标签: c# class struct pass-by-reference