CS1708 de erro do compilador

Buffers de tamanho fixo só podem ser acessados por meio de locais ou campos

Um novo recurso no C# 2.0 é a capacidade de definir uma matriz em linha dentro de um struct.Tais arrays só podem ser acessados por meio de campos ou variáveis locais e não podem ser referenciados como valores intermediários no lado esquerdo de uma expressão.Além disso, as matrizes não podem ser acessadas pelos campos que são static ou readonly.

Para resolver esse erro, definir uma variável de matriz e atribuir a matriz em linha para a variável.Ou, remova o static ou readonly o modificador do campo que representa a matriz em linha.

Exemplo

O exemplo a seguir gera 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;
}