Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 kullanın.
Kovaryans, genel parametrenin belirttiğinden daha türetilmiş bir tür kullanmanıza olanak tanır. Bu özellik, birlikte değişken arabirimleri 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 ters değişken, başvuru türlerini destekler, ancak değer türlerini desteklemez.
Kovarant 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'te IEnumerable<T>T türü birlikte değişken olduğundan, türündeki IEnumerable<string> bir nesneyi özel dönüştürme yöntemleri kullanmadan türündeki IEnumerable<object> bir nesneye atayabilirsiniz.
Aynı türdeki başka bir temsilciye ortak değişken bir temsilci atayabilirsiniz, ancak daha türetilmiş bir genel tür parametresiyle.
Daha fazla bilgi için bkz. Kovaryans ve Kontravaryans.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
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 bir arabirimde, aşağıdaki koşulları karşılarsa bir tür parametresi birlikte değişkenini bildirin:
type parametresini yalnızca arabirim yöntemlerinin dönüş türü olarak kullanırsınız ve bunu yöntem bağımsız değişkenlerinin türü olarak kullanmazsınız.
Uyarı
Bu kuralın bir istisnası vardır. Ortak değişken arabiriminde yöntem parametresi olarak değişken karşıtı genel temsilci 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 parametresini arabirim yöntemleri için genel bir kısıtlama olarak kullanmazsınız.
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, bunu yöntem bağımsız değişkenleri için değil, yalnızca yöntem dönüş türü olarak kullanıyorsanız bir tür kovaryan bildirin.
C# dil belirtimi
Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.