out (genel değiştirici) (C# Başvurusu)

Genel tür parametreleri için out anahtar sözcüğü tür parametresinin birlikte değişken olduğunu belirtir. Anahtar sözcüğünü out genel arabirimlerde ve temsilcilerde kullanabilirsiniz.

Kovaryans, genel parametre tarafından belirtilenden daha türetilmiş bir tür kullanmanıza olanak tanır. Bu, birlikte değişken arabirimler uygulayan sınıfların örtük olarak dönüştürülmesini ve temsilci türlerinin örtük olarak dönüştürülmesini sağlar. Kovaryans ve kontravaryans başvuru türleri için desteklenir, ancak değer türleri için desteklenmez.

Kovaryant tür parametresine sahip bir arabirim, yöntemlerinin tür parametresi tarafından belirtilenlerden daha fazla türetilmiş tür döndürmesini sağlar. Örneğin, .NET Framework 4'te IEnumerable<T>T türü birlikte değişken olduğundan, türündeki IEnumerable(Of String) bir nesneyi özel dönüştürme yöntemleri kullanmadan türün IEnumerable(Of Object) bir nesnesine atayabilirsiniz.

Birlikte değişken bir temsilciye aynı türden başka bir temsilci atanabilir, ancak daha türetilmiş bir genel tür parametresiyle.

Daha fazla bilgi için bkz . Kovaryans ve Contravariance.

Örnek - ortak değişken genel arabirim

Aşağıdaki örnek, birlikte değişken genel bir arabirim bildirmeyi, genişletmeyi ve uygulamayı gösterir. Ayrıca, birlikte değişken bir arabirim uygulayan sınıflar için örtük dönüştürmenin nasıl kullanılacağını gösterir.

// Covariant interface.
interface ICovariant<out R> { }

// Extending covariant interface.
interface IExtCovariant<out R> : ICovariant<R> { }

// Implementing covariant interface.
class Sample<R> : ICovariant<R> { }

class Program
{
    static void Test()
    {
        ICovariant<Object> iobj = new Sample<Object>();
        ICovariant<String> istr = new Sample<String>();

        // You can assign istr to iobj because
        // the ICovariant interface is covariant.
        iobj = istr;
    }
}

Genel arabirimde, aşağıdaki koşulları karşılarsa tür parametresi birlikte değişken olarak bildirilebilir:

  • tür parametresi yalnızca arabirim yöntemlerinin dönüş türü olarak kullanılır ve yöntem bağımsız değişkenlerinin türü olarak kullanılmaz.

    Not

    Bu kuralın bir özel durumu vardır. Bir kovarant arabirimde yöntem parametresi olarak değişken karşıtı genel temsilciniz varsa, bu temsilci için ortak değişken türünü genel tür parametresi olarak kullanabilirsiniz. Kovaryant ve değişken karşıtı genel temsilciler hakkında daha fazla bilgi için bkz . Temsilcilerde Varyans ve Func ve Eylem Genel Temsilcileri için Varyansı Kullanma.

  • tür parametresi, arabirim yöntemleri için genel bir kısıtlama olarak kullanılmaz.

Örnek - ortak değişken genel temsilci

Aşağıdaki örnek, birlikte değişken genel temsilci bildirmeyi, örneği oluşturmayı ve çağırmayı gösterir. Ayrıca, temsilci türlerinin örtük olarak nasıl dönüştürüldüğünü de gösterir.

// Covariant delegate.
public delegate R DCovariant<out R>();

// Methods that match the delegate signature.
public static Control SampleControl()
{ return new Control(); }

public static Button SampleButton()
{ return new Button(); }

public void Test()
{
    // Instantiate the delegates with the methods.
    DCovariant<Control> dControl = SampleControl;
    DCovariant<Button> dButton = SampleButton;

    // You can assign dButton to dControl
    // because the DCovariant delegate is covariant.
    dControl = dButton;

    // Invoke the delegate.
    dControl();
}

Genel bir temsilcide, bir tür yalnızca yöntem dönüş türü olarak kullanılıyorsa ve yöntem bağımsız değişkenleri için kullanılmıyorsa birlikte değişken olarak bildirilebilir.

C# dili belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.