covariance ve contravariance

C# Covariance ve Contravariance

Covariance ve Contravariance, birbirinden türetilmiş tiplerin kendi arasında tür dönüşümü yapılması, birbiriyle yer değiştirilebilmesi ve eşitlikleri gibi karşılaştığımız belirli durumlardır. (Örneğin array tipleri, delegate tipleri ve generic tip argumanlar) Covariance atanabilme uyumluluğunu korumamıza olanak tanırken contravarience tam tersi olarak işlev görmektedir.

  • covariant : Geniş türlerin (more derived) daha küçük türlere (less derived) dönüştürülmesi durumu. Matematiksel olarak <= durumu.
  • contravariant: Küçük türlerin (less derived) daha büyük türlere (more derived) dönüştürülmesi durumu.

C# içerisinde türlerin değişme (variance) özelliklerine bakıldığında kullanım alanı aşağıdaki gibidir.

  • Covariance, dizilerde (arrays) C# 1.0 versiyonundan bu yana kullnımdadır.
  • Covariance ve contravariance, delegelerde (delegates) “method group variance” olarakta bilinmekte ve C# 2.0 versiyonundan bu yana kullanımdadır.
  • Variance (değişme) özelliği interface’lerde bulunan generic tip parametreler ve delegate’lerde C# 4.0 versiyonundan bu yana kullanımdadır.

(daha&helliip;)