構造体のリスト内の要素を変更する
構造体のリストを操作する場合、単純な代入を使用して個々の要素を変更しようとすると結果が変わりますエラー メッセージ「System.Collections.Generic.List.this[int] の戻り値は変更できません。これは、 変数。"これは、構造体の値型のセマンティクスが原因で発生します。
値の型のセマンティクスを理解する
C# では、構造体変数はデータのコピーを保持します。これは、コピーに加えられた変更を意味します。オリジナルには影響しません。この動作は、オブジェクト参照が実際のデータを指すクラスとは異なります。
構造要素へのアクセスと変更
この例では、MyList[1] を割り当てるとき。名前を「bob」にすると、MyStruct の新しいインスタンスが作成され、変数に割り当てられます。ただし、この新しいインスタンスはリスト内の元の要素を参照しません。したがって、元の要素は変更されません。
リスト内の構造体要素を変更するためのオプション
構造体のリスト内の実際の要素を変更するには、次の方法を検討してください。
構造体とクラスの選択
構造体とクラスのどちらを使用するかの決定主にコレクションに保存する必要性に基づくべきではありません。代わりに、表現されるデータのセマンティクスと要件を考慮してください。一般に、単一の不変値を表す値オブジェクトには構造体が好まれます。一方、クラスは、変更可能な状態と潜在的に複雑な関係を持つオブジェクトを表現することに優れています。
以上がC# で構造体のリスト内の要素を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。