Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det går inte att ändra medlemmar i variabeln eftersom det är en skrivskyddad variabeltyp
Det här felet uppstår när du försöker ändra medlemmar i en variabel som är skrivskyddad eftersom den är i en speciell konstruktion.
Ett vanligt område som detta inträffar är inom foreach-loopar . Det är ett kompileringsfel att ändra värdet för samlingselementen. Därför kan du inte göra några ändringar av element som är värdetyper, inklusive structs. I en samling vars element är referenstyper kan du ändra tillgängliga medlemmar i varje element, men alla försök att lägga till eller ta bort eller ersätta fullständiga element genererar kompilatorfel CS1656.
I följande exempel genereras felet CS1654 eftersom Book
är en struct
. Åtgärda felet genom struct
att ändra till en klass.
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 om .NET
.NET är ett öppen källkod projekt. Välj en länk för att ge feedback: