Maison > développement back-end > C++ > Comment puis-je simuler le passage de propriétés par référence en C# ?

Comment puis-je simuler le passage de propriétés par référence en C# ?

Barbara Streisand
Libérer: 2025-01-11 08:50:42
original
995 Les gens l'ont consulté

How Can I Simulate Passing Properties by Reference in C#?

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

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

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

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

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!

source:php.cn
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