(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Compilerfehler CS1708

Auf Puffer fester Größe kann nur über lokale Variablen oder Felder zugegriffen werden.

Als neues Feature besteht in C# 2.0 die Möglichkeit, innerhalb von struct ein Inlinearray zu definieren. Auf solche Arrays kann nur über lokale Variablen oder Felder zugegriffen werden, und auf sie darf nicht als temporäre Werte auf der linken Seite eines Ausdrucks verwiesen werden. Auch kann auf die Arrays nicht von Feldern aus zugegriffen werden, die die Eigenschaften static oder readonly besitzen.

Definieren Sie zum Beheben dieses Fehlers eine Arrayvariable, und weisen Sie dieser Variablen das Inlinearray zu. Oder entfernen Sie den static-Modifizierer oder den readonly-Modifizierer aus dem Feld, das das Inlinearray darstellt.

Im folgenden Beispiel wird CS1708 generiert.

// 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;
}

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft