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.
string GetString(string input, string output) { return string.IsNullOrEmpty(input) ? output : input; } // Example usage: var person = new Person(); person.Name = GetString("test", person.Name);
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é.
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);
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.
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);
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é.
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));
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!