Kesalahan Kompiler CS1654
Tidak dapat memodifikasi anggota 'variabel' karena ini adalah 'jenis variabel baca-saja'
Kesalahan ini terjadi ketika Anda mencoba memodifikasi anggota variabel yang hanya dibaca karena berada dalam konstruksi khusus.
Salah satu area umum yang terjadi ini adalah dalam perulangan foreach. Ini adalah kesalahan waktu kompilasi untuk memodifikasi nilai elemen kumpulan. 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 upaya untuk menambahkan atau menghapus atau mengganti elemen lengkap akan menghasilkan Kesalahan Kompiler CS1656.
Contoh berikut menghasilkan kesalahan CS1654 karena Book
merupakan struct
. Untuk memperbaiki kesalahan, ubah struct
kekelas.
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
}
}
}
}
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: