Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Elemente von 'Variable' können nicht geändert werden, da es sich um einen schreibgeschützten Variablentyp handelt.
Dieser Fehler tritt auf, wenn Sie versuchen, Elemente einer Variablen zu ändern, die schreibgeschützt ist, da sie sich in einem speziellen Konstrukt befindet.
Ein häufiger Bereich, in dem dies auftritt, sind foreach-Schleifen. Es handelt sich um einen Kompilierungszeitfehler, um den Wert der Sammlungselemente zu ändern. Daher können Sie keine Änderungen an Elementen vornehmen, die Werttypen sind, einschließlich Strukturen. In einer Auflistung, deren Elemente Referenztypen sind, können Sie barrierefreie Elemente jedes Elements ändern, aber jeder Versuch, vollständige Elemente hinzuzufügen oder zu entfernen oder zu ersetzen, generiert Compilerfehler CS1656.
Example
Im folgenden Beispiel wird der Fehler CS1654 generiert, da Book ein struct ist. Um den Fehler zu beheben, ändern Sie die struct Klasse in eine Klasse.
using System.Collections.Generic;
using System.Text;
namespace CS1654
{
struct Book
{
public string Title;
public string Author;
public double Price;
public Book(string t, string a, double p)
{
Title=t;
Author=a;
Price=p;
}
}
class Program
{
List<Book> list;
static void Main(string[] args)
{
//Use a collection initializer to initialize the list
Program prog = new Program();
prog.list = new List<Book>();
prog.list.Add(new Book ("The C# Programming Language",
"Hejlsberg, Wiltamuth, Golde",
29.95));
prog.list.Add(new Book ("The C++ Programming Language",
"Stroustrup",
29.95));
prog.list.Add(new Book ("The C Programming Language",
"Kernighan, Ritchie",
29.95));
foreach(Book b in prog.list)
{
//Compile error if Book is a struct
//Make Book a class to modify its members
b.Price +=9.95; // CS1654
}
}
}
}