'variable' のメンバーは '読み取り専用変数型' であるため、変更できません
このエラーは、特殊なコンストラクト内にあるため、読み取り専用の変数のメンバーを変更しようとすると発生します。
これが発生する一般的な領域の 1 つは 、foreach ループ内にあります。 コレクション要素の値を変更するのはコンパイル時エラーです。 そのため、構造体を含む値型の要素を変更することはできません。 要素が参照型のコレクションでは、各要素のアクセス可能なメンバーを変更できますが、完全な要素を追加または削除または置換しようとすると、コンパイラ エラー CS1656 が生成されます。
Example
次の例では、 Book が structであるため、エラー CS1654 が生成されます。 エラーを修正するには、 struct を クラスに変更します。
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
}
}
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET