gpt4 book ai didi

c# - 类的 in 修饰符有什么意义

转载 作者:太空狗 更新时间:2023-10-29 17:42:56 24 4
gpt4 key购买 nike

C# 7.2 为参数引入了 in 修饰符,这对结构特别是只读结构非常有意义。

也允许将其用作引用类型

void Method(in StringBuilder value) { }

由于引用类型默认是按引用传递的,所以上面例子中的in只是一个多余的修饰符吗?

value = null 在你使用 in 时被禁止,这是否意味着它通过将原始引用传递给堆位置也节省了引用地址的副本并阻止更改?

最佳答案

in 以与 ref 完全相同的方式编译为 IL,除了 in 参数被标记为 IsReadOnly 属性。

这意味着 in 的行为与 ref 完全相同,但编译器(而非运行时)强制您不要为 in 参数赋值。

因此,正如您正确指出的那样 - in referenece-type 参数通过引用传递(这意味着引用未被复制并指向原始位置),但编译器阻止您更改它。我真的没有看到它对引用类型有多大用处,但拥有它不会有什么坏处,至少为了一致性。

关于c# - 类的 in 修饰符有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49149544/

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