Affectations de référence dans les champs de classe C#
En C#, tenter d'attribuer par « référence » à un champ de classe peut entraîner un comportement inattendu. Considérez le code suivant :
public class X { public X() { string example = "X"; new Y(ref example); new Z(ref example); System.Diagnostics.Debug.WriteLine(example); } } public class Y { public Y(ref string example) { example += " (Updated By Y)"; } } public class Z { private string _Example; public Z(ref string example) { this._Example = example; this._Example += " (Updated By Z)"; } } var x = new X();
Le résultat attendu est "X (Updated By Y) (Updated By Z)", mais à la place, seul "X (Updated By Y)" est imprimé. Ce comportement se produit car l'attribution d'un "paramètre ref" à un champ perd la référence.
Pourquoi les champs ne peuvent-ils pas contenir de références ?
Il n'y a que trois options possibles lorsque en considérant les champs de "type ref":
L'option 1 a été choisie pour garantir la stabilité du programme et empêcher la création de bombes à retardement dans le code.
Comment obtenir un comportement de référence
Bien que vous ne puissiez pas avoir de champs de type ref, il existe d'autres moyens d'obtenir des champs de type référence. behavior :
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!