Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Não é possível modificar os membros de 'variável' porque é um 'tipo de variável apenas de leitura'
Este erro ocorre quando se tenta modificar membros de uma variável que é apenas de 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 modificar o valor dos elementos da 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.
Example
O seguinte exemplo gera o erro CS1654 porque Book é um struct. 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
}
}
}
}