除了参数,ref关键字还可以用在什么地方?

💡 原文中文,约13100字,阅读约需31分钟。
📝

内容提要

《老生常谈:值类型 V.S. 引用类型》一文介绍了在C#中使用ref关键字传递引用/地址的场景,包括参数、数组索引、方法、ref结构体和ref结构体字段等。还介绍了ref readonly和readonly ref关键字的使用方式。

🎯

关键要点

  • 文章介绍了C#中ref关键字的使用场景,包括参数、数组索引、方法、ref结构体和ref结构体字段。

  • 在方法参数中添加ref关键字意味着传递变量的地址,可以直接操作原始变量。

  • 使用ref关键字可以通过数组索引修改或替换数组元素。

  • 方法可以返回引用/地址,允许直接修改数组元素。

  • ref结构体不能分配到堆上,且只能在栈上使用,具有特定的使用约束。

  • ref结构体不能作为泛型参数、数组元素类型、类或非ref结构体的数据成员。

  • ref结构体不能实现接口,不能导致装箱,不能在委托或Lambda表达式中使用。

  • ref结构体不能在async/await异步方法中使用,也不能在迭代器中使用。

  • 可以定义只读的ref结构体,确保数据成员只能在构造时初始化。

  • ref结构体字段可以返回引用,并且可以定义为只读引用字段,具有不同的修饰方式。

➡️

继续阅读