Covariance and Contravariance in C# 4.0 PRO

Covariance and Contravariance deal with the oredering of types from narrower to wider and their interchangeability or equivalence in specific cases.

When a software programming language supports covariance it means that in specific cases (such as function parameters, generics and function returned types) it supports the conversion from a narrower type (e.g. int) to a wider one (e.g. double).

When a software programming language supports contravariant it means that in specific cases (such as function parameters, generics and function returned types) it supports conversion from a wider type (e.g. double) to a narrower one (e.g. int).

C# 4.0 support for covariance allows us to define a delegate with a return type which is wider than the return type of the function we assign to a variable of that specific delegate type. The following video clip shows a small code sample for this capability.

C# 4.0 support for contravariance allows us to define a function with parameters types higher in the hierarchy (wider) comparing with the parameters types (narrower) we include in our definition for the delegate. The following video clip show a small code sample for this capability.

Share:

The Visitor Design Pattern

The Visitor Design Pattern

The visitor design pattern allows us to add operations to objects that already exist without modifying their classes and without extending them.

What are Anti Patterns?

Anti Patterns

Unlike design patterns, anti patterns just seem to be a solution. However, they are not a solution and they cause additional costs.

Virtual Threads in Java Professional Seminar

Virtual Threads in Java

The use of virtual threads can assist us with improving the performance of our code. Learn how to use virtual threads effectively.

NoSQL Databases Courses, Seminars, Consulting, and Development

MongoDB Design Patterns Meetup

The use of MongoDB involves with various cases in which we can overcome performance issues by implementing specific design patterns.

image of woman and database

Record Classes in Java

Learn how to define record classes in Java, and when to use record classes in your code. Stay up to date with the new Java features.

Accessibility | Career | Conferences | Design Patterns | JavaScript | Meetups | PHP | Podcasts | Python | Self Learning

Teaching Methodologies | Fullstack | C++ | C# | CSS | Node.js | Angular | Java | Go | Android | Kotlin | Swift | Academy

Front End Development | Scala | Architectures | Cloud | Big Data | Internet of Things | Kids Learn Programming

The Beauty of Code

Coding is Art! Developing Code That Works is Simple. Develop Code with Style is a Challenge!

Skip to content Update cookies preferences