out (Referenční dokumentace jazyka C#)
Můžete použít out kontextové klíčové slovo ve dvou kontextech (každá je odkaz na podrobné informace), jako parametr modifikátor nebo v deklarace parametr obecného typu v rozhraní a delegátů.Toto téma popisuje parametr modifikátor, ale můžete zobrazit v tomto tématu jiných informace týkající se prohlášení parametr obecného typu.
out Klíčové slovo způsobí, že argumenty, které mají být předány podle odkazu.Jedná se například ref klíčové slovo, s výjimkou těch, které ref vyžaduje, aby proměnné inicializovat předtím, než je předán.Použití out parametr, definice metody a volání metody je nutné explicitně zadat 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ány jako out není třeba inicializovat před předáním argumentů, je vyžadována přiřadit hodnotu předtím, než vrátí metoda volána metoda.
I když ref a out klíčová slova způsobit různé chování běhu, nejsou považovány za součást podpisu metody v době kompilace.Proto metody nemohou být přetíženy jediným rozdílem je, že jedna metoda má-li ref argument a dalších přijímá out argument.Například následující kód, nebude kompilace:
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, nicméně pokud jedna metoda má ref nebo out argument a druhá používá ani nějak takto:
class OutOverloadExample
{
public void SampleMethod(int i) { }
public void SampleMethod(out int i) { i = 5; }
}
Vlastnosti nejsou proměnné a proto nemůže být předána jako out parametry.
Informace o předávání polí naleznete v tématu 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í typy metod:
Asynchronní metody, které můžete definovat pomocí asynchronní modifikátor.
Iterační metody, které patří přinést return nebo yield break prohlášení.
Příklad
Deklarující out metoda je užitečná v případě, že chcete metodu pro návrat více hodnot.V následujícím příkladu out má být vrácen tři proměnné s rámci jednoho volání metody.Všimněte si, že třetí argument je přiřazen na hodnotu null.To umožňuje metody volitelně vracet hodnoty.
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;
}
}