Heim > Backend-Entwicklung > C++ > Wie funktioniert C# Parameterübergang wirklich: Wert vs. Referenz?

Wie funktioniert C# Parameterübergang wirklich: Wert vs. Referenz?

DDD
Freigeben: 2025-01-31 00:36:10
Original
322 Leute haben es durchsucht

How Does C# Parameter Passing Really Work: Value vs. Reference?

c# Parameterübertragung: Die in -tapte Diskussion der Wertübertragung und Referenzübertragung

In c#sind die Wertübertragung und Referenzübertragung die grundlegenden Konzepte, die Programmierer haben müssen. Obwohl nicht -originale Typen als übertragen angesehen werden, ist die Situation für bestimmte nicht -originalische Objekte (z. B. System.Drawing.image) nicht immer der Fall.

System.Drawing.image -Objektspezifische

Beim Übergeben des Systems. Dies ist jedoch bei System.Drawing.image nicht der Fall. Die in der Anrufmethode vorgenommenen Änderungen verbreiten den Wiederherstellungsempfänger nicht, was zu Verwirrung führt.

Die Wahrheit von "Referenzübertragung"

Dieses Missverständnis ergibt sich aus Missverständnissen über die Bedeutung von Referenz. In C#wird das Objekt selbst nicht übertragen. Umgekehrt werden ihre Werte den Wert des Anfangsparameters übergeben. Für die Art der Referenz sind diese Werte Verweise auf das Objekt selbst. Daher sind alle Änderungen des Objekts selbst in der Anrufmethode für die Call Party sichtbar. Aber was wichtig ist, ist zu beachten, dass der Wert des Parameters selbst (dh der Verweis auf das Objekt) nicht gemäß Referenz übergeben wird. Dies bedeutet, dass, wenn den Parametern einen neuen Wert zugewiesen wird und ein anderes Objekt zitiert, die Call Party diese Änderung nicht sieht.

Lösung: Referenztransfer

Expression

Um sicherzustellen, dass der Anrufteil selbst sichtbar ist, muss der Anruf weitergegeben werden. Unabhängig davon, ob der Parameter der Werttyp oder der Referenztyp ist, kann dies durch

oder Modifikatoren implementiert werden.

Durch die Verwendung dieser Modifikatoren werden die Parameter tatsächlich gemäß Referenz übergeben, und die in der Methode vorgenommenen Änderungen werden in der aufrufenden Partei widerspiegelt.

out Beispiel ref

Um dieses Konzept zu erklären, betrachten Sie bitte das folgende Beispiel:

Im ersten Beispiel wird der Parameter von Wert übergeben, und die Änderungen am Parameter selbst sind für die Call Party nicht sichtbar. Im zweiten Beispiel wird die Formel Modifikator gemäß dem Referenzparameter angezeigt, der für den Parameter selbst sichtbar ist. Im dritten Beispiel werden die Parameter mit Referenz übergeben, die Änderungen am Objekt selbst sind jedoch sichtbar, da der Parameterwert eine Referenz auf das Objekt ist.

Schlussfolgerung

public void Foo(Image image)
{
    // 此更改对调用方不可见。
    image = Image.FromStream(...);
}

public void Foo(ref Image image)
{
    // 此更改对调用方可见。
    image = Image.FromStream(...);
}

public void Foo(Image image)
{
    // 此更改对调用方可见。
    image.RotateFlip(...);
}
Nach dem Login kopieren

c# Referenzübertragung ist ein subtiles Konzept, und sein Verhalten ist nicht immer wie von unserer Intuition erwartet. Das Verständnis der Differenz zwischen dem Übertragungsobjekt und dem Referenzübertragungswert ist für den erwarteten Code von wesentlicher Bedeutung. ref

Das obige ist der detaillierte Inhalt vonWie funktioniert C# Parameterübergang wirklich: Wert vs. Referenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage