Compiler Error CS1654

Tidak dapat mengubah anggota 'variabel' karena ini adalah 'jenis variabel baca-saja'

Kesalahan ini terjadi ketika Anda mencoba memodifikasi anggota variabel yang bersifat baca-saja karena berada dalam konstruksi khusus.

Area umum terjadinya hal ini adalah dalam perulangan foreach. Ini adalah kesalahan waktu kompilasi untuk memodifikasi nilai elemen koleksi. Oleh karena itu, Anda tidak dapat melakukan modifikasi apa pun pada elemen yang merupakan jenis nilai, termasuk struktur. Dalam koleksi yang elemennya adalah jenis referensi, Anda dapat memodifikasi anggota yang dapat diakses dari setiap elemen, tetapi setiap percobaan untuk menambahkan atau menghapus atau mengganti elemen lengkap akan menghasilkan Compiler Error CS1656.

Example

Contoh berikut menghasilkan kesalahan CS1654 karena Book merupakan struct. Untuk memperbaiki kesalahan, ubah struct menjadi kelas.

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  
            }  
  
        }  
    }  
}