fixed语句将内存固定在一个位置。内存中的对象通常会四处移动,这使得垃圾收集成为可能。但是当我们使用指向内存地址的不安全指针时,该内存不能被移动。
我们使用fixed语句来确保垃圾收集器不会重新定位字符串数据。
var myStr = "你好,世界!"; fixed (char* ptr = myStr) { // myStr现在已修复(垃圾收集器不会[删除])。 // 我们现在可以使用ptr做一些事情。 }
在不安全的上下文中使用。
unsafe struct Example { public fixed byte SomeField[8]; public fixed char AnotherField[64]; }
fixed只能用于结构(struct)中的字段(也必须在不安全的上下文中使用)。