Sdílet prostřednictvím


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;
        }
    }

Viz také

Další zdroje

Referenční dokumentace jazyka C#