C#, a veteran player in the world of programming languages is approaching its third decade of life. It was first released in 2000, welcoming the new millennium, the language has till today grown and changed across 7 major versions. It was once a knock off of Java in every aspect except the name has jumped out ahead on many facets.
Across its lifecycle, the release of each new version of the language has been largely coupled with releases of new versions of Visual Studio as well as with releases of the .NET runtime. Sometimes, it can be noted that this coupling has somewhere reduced the pace of innovation.
C# 8.0 new features:
Nullable reference types is one of the most important features and highlight of this new release. This feature is aimed at preventing situations related to null reference exceptions through the use of specific syntax rules: when you hire C# developer, he must explicitly express whether a certain variable may assume a null value. In this case, the type name in the variable declaration must be appended with ?.
Talking about non-nullable reference types, the compiler uses flow analysis to make sure that local variables are initialized to a non-null value when they are declared. Fields must be initialized during construction. The compiler creates a warning if the variable is not set by a call to any of the available constructors or by an initializer. Additionally, non-nullable reference types can't be assigned a value that could be null.
You can now create Asynchronous Streams starting with C# 8.0. A method which returns an asynchronous stream has three properties:
1.It's declared with the async modifier.
2.It returns an IAsyncEnumerable.
3.The method contains yield return statements to return successive elements in the asynchronous stream.
If you want to consume an asynchronous stream, it requires you to add the await keyword before the foreach keyword when you enumerate the elements of the stream. Adding the await keyword requires the method that enumerates the asynchronous stream to be declared with the async modifier and to return a type allowed for an async method. Typically that means returning a Task or Task. It can also be a ValueTask or ValueTask. A method can both consume and produce an asynchronous stream, which means it would return an IAsyncEnumerable. The following code generates a sequence from 0 to 19, waiting 100 ms between generating each number:
C#, as the name portrays, is sharp and powerful. The language has immense potential for anyone who can dig out the plethora of features that it has to offer. Be it small startups or businesses or large enterprises, C# has a solution for all. There is a reason the language has been going strong for two decades. Microsoft, along with the support from a strong community has been able to push some of the most impactful features into the language which has made C# what it is today.