gpt4 book ai didi

c# - 使用 "in"参数修饰符与 int/long/etc(别名 Int32/Int64 非只读结构)

转载 作者:行者123 更新时间:2023-11-30 21:33:06 27 4
gpt4 key购买 nike

在 int/long/etc 中使用“in”参数修饰符有意义吗? int/long 和其他不是只读结构...或者更好,是否只对用户定义的只读结构使用“in”参数修饰符才有意义?

最佳答案

虽然它表达了某种意图,但它改变了很多语义,并且它改变了很多堆栈语义——比如int。它增加了使用的空间(至少在 x64 上)。当然,JIT 可能能够删除它。

预期 用法确实在 readonly struct 上- 特别是那些相对较大的,因此:传递引用比传递值便宜得多,并且 in意味着您不需要防御性副本。但是:如果类型不是 readonly ,然后编译器在任何接受 in 的方法中添加一个防御副本。非 readonly 上的参数输入并做一些看起来不安全的事情。

我不会为 int 而烦恼, long , 但是:如果你真的需要知道:使用 BenchmarkDotNet在代表性场景中。

关于c# - 使用 "in"参数修饰符与 int/long/etc(别名 Int32/Int64 非只读结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com