Maison >développement back-end >C++ >Comment puis-je modifier les valeurs dans une liste de structures en C# ?
Modification des valeurs dans une liste de structures
Lorsque vous travaillez avec une liste de structures, vous pouvez rencontrer une erreur lorsque vous tentez de modifier des éléments. Ce problème se pose en raison de la sémantique de type valeur des structures, qui créent des instances distinctes pour chaque variable de type valeur. De ce fait, lorsqu'un élément struct est copié dans une autre variable, sa modification n'affecte pas l'élément d'origine.
La solution à ce dilemme réside dans le fait que les structs peuvent exposer des interfaces. En créant une interface avec un accesseur défini pour la propriété souhaitée, on peut modifier la structure sous-jacente via la référence d'interface, qui pointe vers l'objet encadré. Le code suivant illustre ce concept :
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";
Cette méthode permet de modifier des éléments dans une liste de structures, même si cela peut entraîner un boxing. Par conséquent, lors de l'examen de la conception d'un type, la nécessité de stocker et de modifier la collection ne doit pas l'emporter sur le choix sémantique approprié entre une classe et une structure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!