更新:2007 年 11 月
错误消息
不能使用非固定表达式中包含的固定大小缓冲区。请尝试使用 fixed 语句。如果您在一个涉及本身不固定的类的表达式中使用固定大小缓冲区,则会出现此错误。运行库可以自由地将未固定的类到处移动以优化内存访问,这在使用固定大小缓冲区时可能会导致错误。为避免此错误,请在语句中使用 fixed 关键字。
示例
下面的示例生成 CS1666。
![]() | |
---|---|
// CS1666.cs // compile with: /unsafe /target:library unsafe struct S { public fixed int buffer[1]; } unsafe class Test { S field = new S(); private bool example1() { return (field.buffer[0] == 0); // CS1666 error } private bool example2() { // OK fixed (S* p = &field) { return (p->buffer[0] == 0); } } private bool example3() { S local = new S(); return (local.buffer[0] == 0); } } |