out – modifikátor parametrů (Referenční dokumentace jazyka C#)
out Klíčové slovo způsobuje argumenty předávané odkazem.To je jako ref klíčové slovo kromě ref vyžaduje inicializována proměnná před předáním.Použití out musí explicitně použít parametr definice metody a volající metodu out klíčové slovo.Příklad:
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
Přestože proměnné předána jako out nemusí být inicializován před předáním argumentů, je nutné přiřadit před metoda vrátí hodnotu volané metody.
Přestože ref a out klíčová slova způsobit jiné chování runtime, nejsou považovány za součást metodu podpisu v době kompilace.Proto nelze metody přetížení jediným rozdílem je, že jedna metoda trvá-li ref argument a jiných trvá out argument.Například následující kód nebude kompilován:
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) { }
}
Přetížení lze provést, však trvá jednu metodu ref nebo out argument a druhá používá ani tímto způsobem:
class OutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { i = 5; }
}
Vlastnosti nejsou proměnné a proto nelze předat jako out parametry.
Informace o předávání polí, Předávání polí pomocí parametrů ref a out (Průvodce programováním v C#).
Nelze použít ref a out klíčová slova pro následující druhy metod:
Asynchronní metody, které definujete pomocí asynchronní modifikátor.
Iterační metody, které patří Vrátí výnos nebo yield break prohlášení.
Příklad
Prohlášení out metoda je užitečná, pokud chcete metodu vrátit více hodnot.Následující příklad používá out vrátit tři proměnné s jedinou metodu volání.Všimněte si, že třetí argument je přiřazena hodnota null.To umožňuje volitelně vracet hodnoty metody.
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;
}
}
Specifikace jazyka C#
Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
Parametry metody (Referenční dokumentace jazyka C#)