除了参数,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结构体字段可以返回引用,并且可以定义为只读引用字段,具有不同的修饰方式。
🏷️
标签
➡️