Compilerfehler CS1654
Member von "Variable" können nicht geändert werden, da es sich um einen "schreibgeschützten Variablentyp" handelt.
Dieser Fehler tritt auf, wenn Sie versuchen, Member einer Variablen zu ändern, die schreibgeschützt ist, da sie sich in einem speziellen Konstrukt befindet.
Häufig ist dieser Fehler im Bereich von forEach -Schleifen zu finden. Dieser Fehler tritt während der Kompilierung auf, wenn der Wert der Auflistungselemente geändert wird. Daher können Sie keine Änderungen an Elementen vornehmen, die Werttypensind (einschließlich Strukturen). In einer Auflistung, deren Elemente Verweistypensind, können Sie zugängliche Member der einzelnen Elemente ändern, aber bei jedem Versuch, vollständige Elemente hinzuzufügen, zu entfernen oder zu ersetzen, wird Compiler Error CS1656generiert.
Im folgenden Beispiel wird der Fehler CS1654 generiert, da Book
eine Struktur ( struct
) ist. Um den Fehler zu beheben, ändern Sie die Struktur ( struct
) in eine Klasse ( class).
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
}
}
}
}
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: