Sie können die out
kontextuelles Schlüsselwort in zwei Kontexten (jeder ist ein Link zu detaillierten Informationen), als Parameter-Modifikator oder in generischen Typparameter-Deklarationen in Schnittstellen und Delegaten. In diesem Thema wird der Parameter-Modifikator behandelt, aber Sie können dieses andere Thema für Informationen über die generischen Typ-Parameter-Deklarationen sehen.
En out
Schlüsselwort bewirkt, dass Argumente per Referenz übergeben werden. Dies ist wie das ref
Schlüsselwort, mit der Ausnahme, dass ref
erfordert, dass die Variable initialisiert wird, bevor sie übergeben wird. Zur Verwendung einer out
Parameter zu verwenden, müssen sowohl die Methodendefinition als auch die aufrufende Methode ausdrücklich den out
Stichwort. Zum Beispiel: C#
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
Obwohl Variablen, die als out
Argumente nicht initialisiert werden müssen, bevor sie übergeben werden, muss die aufgerufene Methode einen Wert zuweisen, bevor die Methode zurückkehrt.
Obwohl die ref
y out
Schlüsselwörter ein anderes Laufzeitverhalten verursachen, werden sie zur Kompilierzeit nicht als Teil der Methodensignatur betrachtet. Daher können Methoden nicht überladen werden, wenn der einzige Unterschied darin besteht, dass eine Methode ein ref
Argument und das andere nimmt ein out
Argument. Der folgende Code wird zum Beispiel nicht kompiliert: C#
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) { }
}
Eine Überladung kann jedoch erfolgen, wenn eine Methode eine ref
o out
Argument und das andere keines, wie hier: C#
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.
Informationen zur Übergabe von Arrays finden Sie unter Übergabe von Arrays mit ref
y out
(C# Programmierhandbuch).
Sie können nicht die ref
y out
Schlüsselwörter für die folgenden Arten von Methoden:
Async methods, which you define by using the async modifier.
Iterator methods, which include a yield return or yield break statement.
Exemple
Die Erklärung eines out
Methode ist nützlich, wenn Sie möchten, dass eine Methode mehrere Werte zurückgibt. Das folgende Beispiel verwendet out
um mit einem einzigen Methodenaufruf drei Variablen zurückzugeben. Beachten Sie, dass das dritte Argument Null zugewiesen wird. Dies ermöglicht es den Methoden, optional Werte zurückzugeben. C#
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;
}
}