Maison > développement back-end > C++ > Comment puis-je modifier efficacement les propriétés C# par référence lorsque la transmission directe n'est pas possible ?

Comment puis-je modifier efficacement les propriétés C# par référence lorsque la transmission directe n'est pas possible ?

Mary-Kate Olsen
Libérer: 2025-01-11 09:50:42
original
1042 Les gens l'ont consulté

How Can I Effectively Modify C# Properties by Reference When Direct Passing Isn't Possible?

Modification des propriétés C# par référence : solutions de contournement

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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));
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal