構造体リスト内の要素の値を変更する
2023-11-19 14:50:16
質問
構造体のリストがあり、その中の1つの要素を変更したい。たとえば、次のような場合です。
MyList.Add(new MyStruct("john");
MyList.Add(new MyStruct("peter");
では、1つの要素を変更したいと思います。
MyList[1].Name = "bob"
しかし、これを実行しようとすると、次のようなエラーが発生します。
の戻り値を変更することはできません。 System.Collections.Generic.List.this[int]' は変数ではないので、その戻り値を変更できません。 変数でないため、変更できません。
クラスのリストを使用すると、この問題は発生しません。
構造体が値型であることが答えに関係しているのでしょうね。
では、構造体のリストがある場合、それらを次のように扱うべきでしょうか。 読み取り専用 ? リスト内の要素を変更する必要がある場合、構造体ではなくクラスを使用する必要がありますか?
どのように解決するのですか?
MyList[1] = new MyStruct("bob");
C#の構造体は、ほとんどの場合、immutable(一旦作成された内部の状態を変更する方法がない)であるように設計されるべきです。
あなたの場合、やりたいことは配列のインデックスを指定して構造体全体を置き換えることであり、単一のプロパティやフィールドだけを変更しようとすることではありません。
関連
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] ミュータブル構造体はなぜ "悪 "なのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み] 構造体がインターフェースを実装するのは安全か?