out (C#-Referenz)
Aktualisiert: November 2007
Das out-Schlüsselwort bewirkt, dass Argumente als Verweis übergeben werden. Dies entspricht dem ref-Schlüsselwort, abgesehen davon, dass für ref die Variable initialisiert werden muss, bevor sie übergeben wird. Um einen out-Parameter zu verwenden, müssen sowohl die Methodendefinition als auch die aufrufende Methode explizit das out-Schlüsselwort verwenden. Beispiel:
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
Als out-Argument übergebene Variablen müssen zwar nicht initialisiert werden, bevor sie übergeben werden, aber die aufrufende Methode muss einen Wert zuweisen, bevor die Methode einen Wert zurückgibt.
Das ref-Schlüsselwort und das out-Schlüsselwort werden zur Laufzeit zwar verschieden, zur Kompilierzeit aber gleich behandelt. Daher können Methoden nicht überladen werden, wenn eine Methode ein ref-Argument annimmt und die andere Methode ein out-Argument annimmt. Diese beiden Methoden sind beispielsweise hinsichtlich der Kompilierung identisch, weswegen dieser Code nicht kompiliert wird:
class CS0663_Example
{
// Compiler error CS0663: "Cannot define overloaded
// methods that differ only on ref and out".
public void SampleMethod(out int i) { }
public void SampleMethod(ref int i) { }
}
Die Überladung ist jedoch möglich, wenn eine Methode ein ref-Argument oder ein out-Argument annimmt und die andere Methode keines der beiden Argumente verwendet. Beispiel:
class OutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { i = 5; }
}
Eigenschaften sind keine Variablen und können daher nicht als out-Parameter übergeben werden.
Weitere Informationen zum Übergeben von Arrays finden Sie unter Übergeben von Arrays mithilfe von "ref" und "out" (C#-Programmierhandbuch).
Beispiel
Das Deklarieren einer out-Methode ist nützlich, wenn eine Methode mehrere Werte zurückgeben soll. Eine Methode, die einen out-Parameter verwendet, kann dennoch auf Variablen als Rückgabetyp zugreifen (siehe return). Darüber hinaus kann sie auch ein Objekt oder mehrere Objekte als out-Parameter an eine aufrufende Methode zurückgeben. In diesem Beispiel wird out verwendet, um mit einem Methodenaufruf drei Variablen zurückzugeben. Beachten Sie, dass das dritte Argument NULL zugewiesen wird. Auf diese Weise können Methoden Werte optional zurückgeben.
class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
5.1.6 Ausgabeparameter
10.6.1.3 Ausgabeparameter
Siehe auch
Konzepte
Referenz
Methodenparameter (C#-Referenz)