In C#-Methoden gibt es sechs Parametertypen: Wertparameter, Referenzparameter, Ausgabeparameter, Parameterarrays, benannte Parameter und optionale Parameter. Der folgende Artikel wird Ihnen einen gewissen Referenzwert bieten. Ich hoffe, dass er für alle hilfreich ist.
Wertparameter
Der Wertparameter ist der Standardtyp der Methode, indem der Wert kopiert wird Der tatsächliche Parameter wird in Form von formalen Parametern an die Methode übergeben. Wenn die Methode aufgerufen wird, führt das System zwei Schritte aus: 1. Platzieren Sie den formalen Parameter.
2. Kopieren Sie die tatsächlichen Parameter in die formalen Parameter.
1) Vor dem Aufruf der Methode liegt die Referenz der als Aktualparameter verwendeten Variablen a1 bereits auf dem Stack.
2) Wenn die Methode startet, weist das System Platz auf dem Stapel für die formalen Parameter zu und kopiert die Werte aus den tatsächlichen Parametern.
3) Da a1 ein Referenztyp ist, wird die Referenz kopiert, und als Ergebnis verweisen sowohl die tatsächlichen Parameter als auch die formalen Parameter auf dasselbe Objekt im Heap.
4) Da a2 ein Werttyp ist, wird der Wert kopiert, wodurch unabhängige Daten entstehen.
5) Nachdem die Methode ausgeführt wurde, werden die formalen Parameter vom Stapel entfernt.
6) a2, Werttyp, sein Wert wird nicht vom Verhalten der Methode beeinflusst.
7) a1. Referenztyp, sein Wert wird durch das Verhalten der Methode geändert.
Referenzparameter 1 Bei der Verwendung von Referenzparametern müssen Sie den Ref-Modifikator in der Deklaration und im Aufruf der Methode verwenden.
2. Der Aktualparameter muss eine Variable sein und ihm muss ein Wert zugewiesen werden, bevor er als Aktualparameter verwendet werden kann.
Bei Wertparametern reserviert das System Speicher für den formalen Parameter auf dem Stapel. Bei Referenzparametern sieht der Parametername des formalen Parameters hingegen wie ein Alias aus tatsächliche Parametervariable, d. h. sie zeigen auf denselben Speicherort. Daher sind alle während der Ausführung der Methode an den formalen Parametern vorgenommenen Änderungen auch nach Abschluss der Methodenausführung noch gültig (angezeigt in den tatsächlichen Parametervariablen).
Die Übergabe von Referenzparametern erfolgt sowohl für Werttypen als auch für Referenztypen vollständig. Es erfolgt kein Kopieren von Werten und Referenzen, d. h. es wird auf den gleichen Speicherort verwiesen.
Ausgabeparameter Ausgabeparameter werden verwendet, um Daten vom Methodenkörper an den aufrufenden Code zu übergeben. Sie sind Referenzparametern sehr ähnlich.
1. Der Out-Modifikator muss in der Deklaration und im Aufruf der Methode verwendet werden.
2. Ähnlich wie Referenzparameter müssen Aktualparameter Variablen sein.
Genau wie Referenzparameter dienen die formalen Parameter der Ausgabeparameter als Aliase für die tatsächlichen Parameter innerhalb der Methode und werden nach Abschluss der Methodenausführung durch die tatsächlichen Parametervariablen sichtbar.
Im Gegensatz zu Referenzparametern gelten für Ausgabeparameter die folgenden zwei Anforderungen.
1. Innerhalb der Methode muss dem Ausgabeparameter vor dem Lesen ein Wert zugewiesen werden, was bedeutet, dass der Anfangswert des Parameters irrelevant ist, sodass keine Notwendigkeit besteht, dem tatsächlichen Parameter zuvor einen Wert zuzuweisen die Methode wird aufgerufen.
2. Bevor die Methode zurückkehrt, muss jeder mögliche Pfad durch die Methode einmal allen Ausgabeparametern zugewiesen werden.ParameterarrayIn den oben genannten 3 Parametermethoden muss ein tatsächlicher Parameter genau einem formalen Parameter entsprechen. Das Parameterarray ist unterschiedlich. Dies ermöglicht, dass null oder mehr tatsächliche Parameter einem speziellen formalen Parameter entsprechen.
Die Anforderungen für Parameter-Arrays sind wie folgt:
1. Es darf nur ein Parameter-Array in einer Parameterliste vorhanden sein.
2. Wenn ja, muss es das letzte in der Liste sein.
Die Deklaration eines Parameter-Arrays muss den Modifikator params haben (für den Aufruf ist kein Modifikator erforderlich) und es muss ein Array eines Typs sein.
Bei Verwendung der verteilten Parameterübergabe führt der Compiler Folgendes aus:
1) Akzeptiert eine Liste tatsächlicher Parameter und verwendet sie zum Erstellen und Initialisieren eines Heaps Array.
2) Speichern Sie den Verweis des Arrays auf den formalen Parameter auf dem Stapel.
3) Wenn an der entsprechenden formalen Parametergruppenposition kein tatsächlicher Parameter vorhanden ist, erstellt der Compiler ein Array mit null Elementen zur Verwendung.
4) Wenn der Array-Parameter ein Werttyp ist, wird der Wert kopiert und die tatsächlichen Parameter werden innerhalb der Methode nicht beeinflusst.
5) Wenn der Array-Parameter ein Referenztyp ist, wird die Referenz kopiert und das vom tatsächlichen Parameter referenzierte Objekt kann innerhalb der Methode beeinflusst werden.
Bei der Array-Parameterübergabe verwendet der Compiler Ihre Daten, anstatt sie neu zu erstellen. Das entspricht Referenzparametern.
Benannte ParameterDie vier oben verwendeten Parameter sind alle Positionsparameter, was bedeutet, dass die Position jedes tatsächlichen Parameters dieselbe sein muss entspricht der entsprechenden formalen Parameterposition.
Ab .Net4.0 können die tatsächlichen Parameter im Methodenaufruf in beliebiger Reihenfolge aufgelistet werden, solange der Name des angegebenen Parameters angezeigt wird. Die Details sind wie folgt.
1. Es gibt keinen Unterschied in der Methodendeklaration. Die formalen Parameter haben bereits Namen.
2. Beim Aufruf einer Methode folgt jedoch auf den Namen des formalen Parameters ein Doppelpunkt und der tatsächliche Parameterwert oder Ausdruck.
beim Aufruf der Methode einschließen oder weglassen.
Um anzuzeigen, dass ein Parameter optional ist, müssen Sie beim Deklarieren der Methode einen Standardwert für den Parameter angeben. Die Syntax zum Angeben von Standardwerten ist dieselbe wie zum Initialisieren lokaler Variablen.
Wie unten gezeigt
1) Der formale Parameter b wird auf den Standardwert gesetzt.2) Daher gibt es beim Aufrufen der Methode nur einen Parameter und die Methode verwendet 3 als Initialisierung des zweiten Parameters.
Es gibt mehrere wichtige Aspekte bei der Deklaration optionaler Parameter:
1. Nicht alle Parametertypen können als optionale Parameter verwendet werden.
1) Solange der Standardwert des Werttyps zur Kompilierungszeit ermittelt werden kann, können Sie den Werttyp als optionalen Parameter verwenden.
2). Referenztypen können nur dann als optionale Parameter verwendet werden, wenn der Standardwert null ist.
3) Optionale Parameter können nur Wertparameter sein.
2. Alle erforderlichen Parameter müssen vor der Deklaration der optionalen Parameter deklariert werden. Wenn es Parameter gibt, müssen diese nach allen optionalen Parametern deklariert werden.
3. Es muss vom Ende der optionalen Parameterliste bis zum Anfang weggelassen werden, da es sonst zu Parametermehrdeutigkeiten kommt. 4. Wenn Sie Parametermehrdeutigkeiten beseitigen möchten, können Sie die Funktionen benannter Parameter und optionaler Parameter kombinieren. Wie unten gezeigtDieser Artikel stammt aus der Spalte
C#.Net-Tutorial, willkommen zum Lernen!
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die sechs Parameter von C#-Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!