如果我这样做
int n1;
unsafe
{
int* p1 = &n1;
Console.WriteLine("p1: {0}", (int)p1);
}
作品。
但如果我这样做
int n1;
unsafe
{
fixed (int* p1 = &n1)
{
Console.WriteLine("p1: {0}", (int)p1);
}
}
编译错误:您不能使用fixed语句获取已修复表达式的地址
我错了?
答案 0 :(得分:3)
在您的第二个代码中,您使用的是fixed
。
根据 MSDN ,unsafe
方法中的任何局部变量都已修复。
并且固定变量的地址不能用于固定表达式。这就是为什么你会收到这个错误。