CS1708 de erro do compilador

Mensagem de erro

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

Um novo recurso do translation from VPE for Csharp 2.0 é a capacidade de definir uma matriz em linha dentro de um struct. Tais arrays só podem ser acessados por meio de variáveis locais ou campos e não podem ser referenciados sistema autônomo sistema autônomo valores intermediários do lado esquerdo de uma expressão.Além disso, as matrizes não podem ser acessadas por campos que estão static ou readonly.

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

Exemplo

O exemplo a seguir gera CS1708.

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

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

public unsafe class C
{
    public Foo UnsafeMethod()
    {
        Foo myFoo = new Foo();
        return myFoo;
    }

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

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

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

    static readonly Foo _foo1;
    public readonly Foo _foo2;
}