Compilerfehler CS1708Compiler Error CS1708

Auf Puffer fester Größe kann nur über lokale Variablen oder Felder zugegriffen werdenFixed size buffers can only be accessed through locals or fields

Eine neue Funktion in C# 2.0 ist die Möglichkeit zum Definieren eines Inlinearray innerhalb von struct.A new feature in C# 2.0 is the ability to define an in-line array inside of a struct. Auf solche Arrays kann nur über lokale Variablen oder Felder zugegriffen werden und sie können nicht als Zwischenwerte auf der linken Seite eines Ausdrucks verwiesen werden.Such arrays can only be accessed via local variables or fields, and may not be referenced as intermediate values on the left-hand side of an expression. Darüber hinaus kann auf die Arrays nicht durch Felder zugegriffen werden, die static oder readonly sind.Also, the arrays cannot be accessed by fields that are static or readonly.

Definieren Sie eine Arrayvariable, und weisen Sie der Variablen das Inlinearray zu, um diesen Fehler zu beheben.To resolve this error, define an array variable, and assign the in-line array to the variable. Oder Sie entfernen den static- oder readonly-Modifizierer aus dem Feld, welches das Inlinearray darstellt.Or, remove the static or readonly modifier from the field representing the in-line array.

BeispielExample

Im folgenden Beispiel wird CS1708 generiert.The following sample generates 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;  
}