将 C# 7.2 'in' 参数修饰符放在任何地方有用吗

Posted

技术标签:

【中文标题】将 C# 7.2 \'in\' 参数修饰符放在任何地方有用吗【英文标题】:Is it useful to put the C# 7.2 'in' parameter modifier everywhere将 C# 7.2 'in' 参数修饰符放在任何地方有用吗 【发布时间】:2020-04-03 09:09:59 【问题描述】:

自 C# 7.2 起,in parameter modifier 允许以只读方式通过引用传递参数。

据我了解,此修饰符允许通过引用传递结构并确保数据不会被修改。当需要传递大结构时,它对于性能目的很有用。

但是,将它用于较小的结构大小是否有用(如intbool)?

【问题讨论】:

任何功能,不仅仅是语法糖,实际上是在做某事,永远不会在任何地方都有用。没有痛苦就没有收获。 【参考方案1】:

不,(盲目地)将in 参数修饰符放在任何地方都没有用,因为编译器可能会创建防御性副本。

具体的例子可以在下面的问题中找到:

Using C# 7.2 in modifier for parameters with primitive types

【讨论】:

以上是关于将 C# 7.2 'in' 参数修饰符放在任何地方有用吗的主要内容,如果未能解决你的问题,请参考以下文章

C# 7.2 对运算符使用“in parameter”

为啥有人会在 C# 中使用“in”参数修饰符?

ReadOnlySpan<T> 参数是不是应该使用“in”修饰符?

类的 in 修饰符有啥意义

C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法

C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法