C# Can';不要使用关键字';固定的';对于C中的变量#
我用数组和字符串变量测试了关键字C# Can';不要使用关键字';固定的';对于C中的变量#,c#,pointers,fixed,unsafe,C#,Pointers,Fixed,Unsafe,我用数组和字符串变量测试了关键字fixed,效果非常好,但不能用单个变量 static void Main() { int value = 12345; unsafe { fixed (int* pValue = &value) { // problem here *pValue = 54321; } } } 行fixed(int*pValue=&value)导致编译器错误。我没有得到它,因为变量值已超出
fixed
,效果非常好,但不能用单个变量
static void Main() {
int value = 12345;
unsafe {
fixed (int* pValue = &value) { // problem here
*pValue = 54321;
}
}
}
行fixed(int*pValue=&value)
导致编译器错误。我没有得到它,因为变量值
已超出不安全
块,并且它尚未固定
为什么我不能对变量
value
使用fixed
?这是因为value
是一个局部变量,分配在堆栈上,所以它已经固定了。错误消息中提到了这一点:
CS0213不能使用fixed语句获取已固定表达式的地址
如果需要值的地址
,则不需要固定的
语句,可以直接获取:
int* pValue = &value;
你应该每个问题只问一个问题,而不是几个问题。您还没有包含有关代码的实际错误消息。fixed用于修复数组,而不是单个类型。@M.kazemAkhgary
fixed
在不同上下文中有两个完全正交的含义。它用于在结构中创建内联数组,并用于将值固定在内存中,以便GC在非托管代码中访问该值时无法移动该值。您是否尝试将value
放置在不安全块中?int value=12345代码>已是固定表达式。所以你只需要它的指针<代码>int*指针=&value代码>