Maison >développement back-end >C++ >Comment puis-je conserver des références lors de l'attribution de valeurs aux champs de classe en C# ?
Conservation des références dans les affectations de champs de classe en C#
Lorsque vous tentez d'attribuer une valeur par référence à un champ de classe, un comportement inattendu peut se produire. Dans l'exemple fourni, l'attribution d'un "paramètre ref" à un champ entraînait une perte de référence.
Comprendre la restriction
C# restreint la déclaration des champs comme références à variables. Cela est dû aux conséquences potentielles :
Surmonter la limitation
Bien qu'un véritable champ de référence ne soit pas possible, il existe des alternatives :
Option 1 : Créer une classe Wrapper
Vous pouvez créer une classe wrapper qui contient la valeur référencée en tant que propriété. La classe peut fournir des méthodes pour obtenir et définir la valeur, en préservant efficacement la référence.
public class Wrapper { public int Value { get; set; } } ... Wrapper wrapper = new Wrapper { Value = 123 };
Option 2 : Utiliser des expressions Lambda
Vous pouvez utiliser des expressions lambda pour définir un getter et un setter pour une variable référencée. Cela attribue une référence à la variable via un délégué.
public delegate int Getter(); public delegate void Setter(int value); ... Getter getter = () => y; Setter setter = z => { y = z; };
Conclusion
En comprenant les raisons derrière la restriction du champ ref et en utilisant des techniques alternatives telles que les classes wrapper ou des expressions lambda, il est possible d'obtenir un comportement de type référence dans les affectations de champs de classe en C#.
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!