out (odwołanie w C#)
Można użyć out kontekstowe słowo kluczowe w kontekstach dwóch (każdy to łącze, aby uzyskać szczegółowe informacje), jako modyfikator parametr lub deklaracji parametrów typu ogólnego w interfejsów i delegatów.W tym temacie opisano modyfikator parametru, ale możesz zobaczyć w tym temacie innych informacji o deklaracji parametrów typu ogólnego.
out Słowa kluczowego powoduje, że argumenty do przekazania na mocy odwołania.Jest to jak ref słowa kluczowego, z wyjątkiem ref wymaga zainicjowanej zmiennej przed został przekazany.Aby użyć out jawnie muszą używać parametrów, definicji metody oraz wywołania metody out słowo kluczowe.Na przykład:
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
Mimo że zmienne przekazywane jako out argumenty nie trzeba przed przekazaniem, jest wymagana można przypisać wartość, zanim metoda zwraca wywołana metoda.
Chociaż ref i out słowa kluczowe przyczynę różnych zachowaniem w czasie wykonywania, nie są wliczane część podpisu metody w czasie kompilacji.W związku z tym, nie może być przeciążone metody, jeśli jest jedyną różnicą, że jednej metody pobierającej ref argument i innych ma out argumentu.Poniższy kod, na przykład nie zostanie skompilowany:
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) { }
}
Przeciążenie będzie możliwe, jednak jeśli jednej metody pobierającej ref lub out argument, a druga używa ani w taki sposób:
class OutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { i = 5; }
}
Właściwości nie są zmienne i nie mogą być przekazywane jako out parametrów.
Informacji o przekazywanie tablic, zobacz Przekazywanie tablic za pomocą ref i out (Przewodnik programowania w języku C#).
Nie można użyć ref i out słowa kluczowe rodzaju następujących metod:
Asynchronicznej metody, które można zdefiniować przy użyciu asynchronicznego modyfikator.
Metody sterująca, które obejmują uzyskanie zwrotu lub yield break instrukcji.
Przykład
Deklarującego out metoda jest użyteczna, gdy chcesz, aby metodę, aby zwracać wiele wartości.W poniższym przykładzie użyto out do zwrócenia trzy zmienne z wywołania metody pojedynczego.Należy zauważyć, że trzeci argument jest przypisana do wartości null.Dzięki temu metody opcjonalnie zwracać wartości.
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;
}
}