ホームページ >バックエンド開発 >C++ >C# で構造体のリスト内の値を変更するにはどうすればよいですか?

C# で構造体のリスト内の値を変更するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-02 17:28:391044ブラウズ

How Can I Modify Values Within a List of Structs in C#?

構造体のリストの値の変更

構造体のリストを操作する場合、要素を変更しようとするとエラーが発生する場合があります。この問題は、値型変数ごとに個別のインスタンスを作成する構造体の値型セマンティクスが原因で発生します。その結果、構造体要素が別の変数にコピーされるとき、その変更は元の要素には影響しません。

このジレンマの解決策は、構造体がインターフェイスを公開できるという事実にあります。目的のプロパティの set アクセサーを使用してインターフェイスを作成すると、ボックス化されたオブジェクトを指すインターフェイス参照を介して基になる構造体を変更できます。次のコードは、この概念を示しています。

public interface IMyStructModifier
{
    String Name { set; }
}

public struct MyStruct : IMyStructModifier
{
    ...
}

List<Object> obList = new List<object>();
obList.Add(new MyStruct("ABC"));
obList.Add(new MyStruct("DEF));

// Using a boxed object
MyStruct temp = (MyStruct)obList[1];
temp.Name = "Gishu";

// Using the interface
IMyStructModifier temp2 = obList[1] as IMyStructModifier;
temp2.Name = "Now Gishu";

このメソッドでは、ボックス化が発生する可能性がありますが、構造体のリスト内の要素を変更できます。したがって、型の設計を検討する場合、コレクションの保存と変更の必要性が、クラスと構造体の間での適切なセマンティックの選択をオーバーライドするべきではありません。

以上がC# で構造体のリスト内の値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。