Heim > Backend-Entwicklung > C++ > Wie kann ich die Übergabe von Eigenschaften per Referenz in C# simulieren?

Wie kann ich die Übergabe von Eigenschaften per Referenz in C# simulieren?

Barbara Streisand
Freigeben: 2025-01-11 08:50:42
Original
995 Leute haben es durchsucht

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

C# Property Pass-by-Reference-Simulation

Die direkte Übergabe von Eigenschaften per Referenz wird in C# nicht unterstützt. Allerdings ahmen mehrere Techniken dieses Verhalten nach.

1. Rückgabewertmethode:

Der einfachste Ansatz besteht darin, den Wert der Eigenschaft von einer Methode zurückzugeben und ihn neu zuzuweisen.

<code class="language-csharp">string GetString(string input)
{
    return input;
}

void Main()
{
    var person = new Person();
    person.Name = GetString("test");
}</code>
Nach dem Login kopieren

2. Delegiertenbasierter Ansatz:

Ein Delegat kann die Setter-Methode der Eigenschaft darstellen und so indirekte Änderungen ermöglichen.

<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>
Nach dem Login kopieren

3. LINQ-Ausdruckstechnik:

LINQ-Ausdrücke bieten eine ausgefeiltere Möglichkeit, auf Eigenschaftswerte zuzugreifen und diese zu bearbeiten.

<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>
Nach dem Login kopieren

4. Reflexionsbasierte Lösung:

Reflection bietet die flexibelste (aber möglicherweise langsamere) Methode für den dynamischen Zugriff auf und die Änderung von Eigenschaften.

<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>
Nach dem Login kopieren

Jede Methode hat ihre Nachteile. Die Rückgabewertmethode ist am einfachsten, während die Reflexion die größte Flexibilität bietet, aber einen Leistungsaufwand mit sich bringt. Delegaten und LINQ-Ausdrücke stellen Zwischenlösungen mit unterschiedlichem Komplexitätsgrad bereit. Die beste Wahl hängt von Ihren spezifischen Anforderungen und Leistungsüberlegungen ab.

Das obige ist der detaillierte Inhalt vonWie kann ich die Übergabe von Eigenschaften per Referenz in C# simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage