Erro do compilador CS1654
Não é possível modificar membros de 'variável' porque é um 'tipo de variável somente leitura'
Este erro ocorre quando você tenta modificar membros de uma variável que é somente leitura porque está em uma construção especial.
Uma área comum em que isso ocorre é dentro de loops foreach . É um erro em tempo de compilação para modificar o valor dos elementos de coleção. Portanto, você não pode fazer modificações em elementos que são tipos de valor, incluindo structs. Em uma coleção cujos elementos são tipos de referência, você pode modificar membros acessíveis de cada elemento, mas qualquer tentativa de adicionar, remover ou substituir elementos completos gerará o erro do compilador CS1656.
O exemplo a seguir gera o erro CS1654 porque Book
é um struct
arquivo . Para corrigir o erro, altere o struct
para uma classe.
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
}
}
}
}
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: