Le passage direct des propriétés C# par référence n'est pas réalisable en raison de la sémantique de référence du langage. Cependant, plusieurs méthodes offrent des fonctionnalités similaires.
1. Modification de la valeur de retour :
La méthode la plus simple consiste à renvoyer la valeur de la propriété modifiée à partir de la fonction de modification. Le code appelant met ensuite à jour la propriété avec cette valeur renvoyée.
<code class="language-csharp">string GetString(string input, string output) { return string.IsNullOrEmpty(input) ? output : input; } // Example usage: var person = new Person(); person.Name = GetString("test", person.Name);</code>
2. Approche basée sur les délégués :
Les délégués permettent de transmettre des références de fonction en tant qu'arguments. Cela permet de modifier la valeur de la propriété dans le cadre du délégué.
<code class="language-csharp">void SetStringValue(string input, Action<string> setter) { if (!string.IsNullOrEmpty(input)) { setter(input); } } // Example usage: var person = new Person(); SetStringValue("test", value => person.Name = value);</code>
3. Tirer parti des expressions LINQ :
Les expressions LINQ offrent un accès à la réflexion, permettant la définition dynamique de la valeur des propriétés.
<code class="language-csharp">void SetProperty<T>(string input, T target, Expression<Func<T, string>> propertyExpression) { if (!string.IsNullOrEmpty(input)) { var memberExpression = (MemberExpression)propertyExpression.Body; var propertyInfo = (PropertyInfo)memberExpression.Member; propertyInfo.SetValue(target, input); } } // Example usage: var person = new Person(); SetProperty("test", person, x => x.Name);</code>
4. Utiliser la réflexion :
Reflection permet une inspection d'exécution et une modification de la structure des objets. Cela permet la récupération dynamique et la définition des valeurs de propriété.
<code class="language-csharp">void SetPropertyValue(string input, object target, string propertyName) { if (!string.IsNullOrEmpty(input)) { var property = target.GetType().GetProperty(propertyName); property?.SetValue(target, input); } } // Example usage: var person = new Person(); SetPropertyValue("test", person, nameof(Person.Name));</code>
Ces méthodes fournissent des alternatives au passage direct des références de propriété, permettant une manipulation flexible de la valeur de propriété 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!