我用数组和字符串变量测试了关键字fixed
,效果非常好,但是我不能在单个变量中使用。
static void Main() {
int value = 12345;
unsafe {
fixed (int* pValue = &value) { // problem here
*pValue = 54321;
}
}
}
代码fixed(int* pValue = &value)
会导致编译错误。因为变量value
已经超出了unsafe
块,且未被锁定。
为什么我不能对变量value
使用fixed
?
fixed
在不同的上下文中有两个完全不同的意义。它用于在结构体中内联创建数组,也用于将值固定在内存中,以便在非托管代码中访问时不能被 GC 移动。 - Servyvalue
放置在不安全代码块中? - Frecklefoot