Simulation de passage par référence de propriété C#
Le passage direct de propriétés par référence n'est pas pris en charge en C#. Cependant, plusieurs techniques imitent ce comportement.
1. Méthode de valeur de retour :
L'approche la plus simple consiste à renvoyer la valeur de la propriété à partir d'une méthode et à la réaffecter.
<code class="language-csharp">string GetString(string input) { return input; } void Main() { var person = new Person(); person.Name = GetString("test"); }</code>
2. Approche basée sur les délégués :
Un délégué peut représenter la méthode de définition de la propriété, permettant une modification indirecte.
<code class="language-csharp">void SetString(string input) { // Assign 'input' to the relevant property here. } void Main() { var person = new Person(); GetString("test", SetString); // 'GetString' would need to invoke 'SetString' }</code>
3. Technique d'expression LINQ :
Les expressions LINQ offrent un moyen plus sophistiqué d'accéder et de manipuler les valeurs des propriétés.
<code class="language-csharp">void GetString<T>(string input, T target, Expression<Func<T, string>> outExpr) { // Use the expression to assign 'input' to the property. Requires expression tree manipulation. } void Main() { var person = new Person(); GetString("test", person, x => x.Name); }</code>
4. Solution basée sur la réflexion :
Reflection fournit la méthode la plus flexible (mais potentiellement plus lente) pour accéder et modifier les propriétés de manière dynamique.
<code class="language-csharp">void GetString(string input, object target, string propertyName) { // Use reflection to set the property value. } void Main() { var person = new Person(); GetString("test", person, nameof(Person.Name)); }</code>
Chaque méthode a ses compromis. La méthode de la valeur de retour est la plus simple, tandis que la réflexion offre la plus grande flexibilité mais introduit une surcharge de performances. Les délégués et les expressions LINQ fournissent des solutions intermédiaires avec différents degrés de complexité. Le meilleur choix dépend de vos besoins spécifiques et de vos considérations de performances.
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!