【发布时间】:2019-03-20 02:18:25
【问题描述】:
所以,我(想我)了解 in 参数修饰符的作用。但它所做的似乎是相当多余的。
通常,我认为使用 ref 的唯一原因是修改调用变量,这是 in 明确禁止的。所以通过 in 引用传递似乎在逻辑上等同于按值传递。
有某种性能优势吗?我相信在事物的后端,ref 参数必须至少复制变量的物理地址,它应该与任何典型的对象引用大小相同。
那么,优势只是更大的结构,还是有一些幕后编译器优化使其在其他地方具有吸引力?如果是后者,为什么我不应该将 every 参数设为 in?
【问题讨论】:
-
是的,有性能优势。
ref用于通过引用传递 structs 而不是复制它们。in表示不应修改结构。 -
@dbc 不,这与互操作无关
-
详细讨论here。注意最后一个警告:
It means that you should never pass a non-readonly struct as in parameter. -
我可以发誓这是重复的,但我再也找不到了