Describe contra-variance and covariance

Briefly describe contra-variance and covariance in .NET Framework 4.0 and give an example for both?

E

Expert

Verified

In .NET 4.0, the CLR supports contra-variance and covariance of kind in general interfaces and delegates. Covariance allow to cast a generic kind to its base types, that is, we can allot a instance of type IEnumerable<Tl> to a variable of type IEnumerable<T2> where, T1 receives from T2. Such as:

Contravariance permits us to allot a variable of Action<base> to a variable of type Action<derived>. Like:

IEnumerable<string> str1= new List<string> ();
IEnumerable<object> str2= str1;
IComparer<object> obj1 = GetComparer()
IComparer<string> obj2 = obj1

.NET framework 4.0 uses a number of language keywords ‘in and out’ to interpret covariance and contra-variance. ‘Out’ is for covariance, whereas ‘in’ is used for contra-variance.

Variance can be related only to reference types, generic delegates and generic interfaces. These cannot be applied to generic types and value types.

   Related Questions in DOT NET Programming

©TutorsGlobe All rights reserved 2022-2023.