Introducing C# 9: Covariant returns
In May 20th 2020, Microsoft introduced C# 9, among the features announced, there is one that has not yet been talked about much: covariant returns. Usually in C# when we inherit from a class, it is possible to override a method if it is declared abstract or virtual but it is not possible to change the return type of this method. C# 9 allows this, In addition to overriding a virtual or abstract method, in C# 9 you can now return a covariant type of the initial type declared in the parent class. For example, you can now return a type that is inherited from the parent class. In this article I will show you how it works with a very simple example and compare with earlier versions of C# 9. This post was produced with input from Dave Brock. Dave recently posted some really interesting C # 9 articles which you can find here: https://daveabrock.com/2020/06/29/c-sharp-9-deep-dive-inits
Before C# 9
Here is a simple example of “covariant returns” before C# 9, you had to return the initial type like this:
Then after instanciation and calling the Order method, you had to cast the initial return type to its derived type like this:
As you can see there a cast to perform, and it can avoided with C# 9 🙂
With C# 9
Now let’s take the same example, but now you can explicitely return a covariant like this:
Its makes the consumption simpler:
It’s definitely not the most famous functionality of C# 9 but it could be pretty useful, your code is being a bit simpler :).
I would like to thanks Dave Brock for his participation as well, it was very fun to get his insights. I strongly encourage you to visit his awesome blog (https://daveabrock.com/) !