문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
Visual Studio 2017을 사용하는 것이 좋습니다.
이 설명서는 보관되지만 유지 되지 않습니다.

컴파일러 오류 CS1708

고정 버퍼는 지역 변수 또는 필드를 통해서만 액세스할 수 있습니다.

C# 2.0에는 struct 내부에 인라인 배열을 정의하는 새로운 기능이 있습니다. 이러한 배열에는 지역 변수 또는 필드를 통해서만 액세스할 수 있으며 식의 왼쪽에서 중간 값으로 참조할 수 없습니다. 또한 static 또는 readonly인 필드에서는 배열에 액세스할 수 없습니다.

이 오류를 해결하려면 배열 변수를 정의하고 이 변수에 인라인 배열을 할당합니다. 또는 필드에서 인라인 배열을 나타내는 static 또는 readonly 한정자를 제거합니다.

다음 샘플에서는 CS1708 오류가 발생하는 경우를 보여 줍니다.

// CS1708.cs
// compile with: /unsafe
using System;

unsafe public struct S
{
    public fixed char name[10];
}

public unsafe class C
{
    public S UnsafeMethod()
    {
        S myS = new S();
        return myS;
    }

    static void Main()
    {
        C myC = new C();
        myC.UnsafeMethod().name[3] = 'a';  // CS1708
        // Uncomment the following 2 lines to resolve:
        // S myS = myC.UnsafeMethod();
        // myS.name[3] = 'a';

        // The field cannot be static.
        C._s1.name[3] = 'a';  // CS1708

        // The field cannot be readonly.
        myC._s2.name[3] = 'a';  // CS1708
    }

    static readonly S _s1;
    public readonly S _s2;
}
표시: