Compilerfehler CS1708
Auf Puffer fester Größe kann nur über lokale Variablen oder Felder zugegriffen werden
Eine neue Funktion in C# 2.0 ist die Möglichkeit zum Definieren eines Inlinearray innerhalb von 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. Darüber hinaus kann auf die Arrays nicht durch Felder zugegriffen werden, die static
oder readonly
sind.
Definieren Sie eine Arrayvariable, und weisen Sie der Variablen das Inlinearray zu, um diesen Fehler zu beheben. Oder Sie entfernen den static
- oder readonly
-Modifizierer aus dem Feld, welches das Inlinearray darstellt.
Beispiel
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;
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für