컴파일러 오류 CS1666
업데이트: 2007년 11월
오류 메시지
고정되지 않은 식에 포함된 고정 크기 버퍼는 사용할 수 없습니다. fixed 문을 사용하십시오.
You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.
이 오류는 고정되지 않은 클래스와 관련된 식에서 고정 크기 버퍼를 사용하는 경우에 발생합니다. 메모리 액세스를 최적화하기 위해 런타임에서 고정되지 않은 클래스를 임의로 이동하는 경우가 있으므로 고정 크기 버퍼를 사용하면 오류가 발생할 수 있습니다. 이 오류가 발생하지 않도록 하려면 문에 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);
}
}