Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Covariance & Contravariance

📚 Konu

Generic variance: covariance (out), contravariance (in), invariance.

🔑 Kavramlar

  • Covariance (out): T sadece return type - IProducer → IProducer
  • Contravariance (in): T sadece parameter - IConsumer → IConsumer
  • Invariance: T hem input hem output - no conversion

💻 Kullanım

cd samples/02-Intermediate/CovarianceContravariance
dotnet run

🎓 Örnekler

// Covariance
public interface IProducer<out T> {
    T Produce();
}
IProducer<Dog>IProducer<Animal>  // ✅

// Contravariance
public interface IConsumer<in T> {
    void Consume(T item);
}
IConsumer<Animal>IConsumer<Dog>  // ✅

💡 Rules

  • out: T only in return positions
  • in: T only in parameter positions
  • Neither: Invariant