InfoQ Homepage C# 8 Content on InfoQ
-
Microsoft Releases C# 8.0
Last week Microsoft announced the official availability of C# 8.0 as part of the .NET Core 3.0 release, simultaneously at .NET Conf 2019 and on their development blog. The new language features include nullable reference types, asynchronous streams, default interface members, and new code patterns. All new features are supported in Visual Studio 2019.
-
Microsoft .NET Conf 2019: .NET Core 3.0, C# 8.0, F# 4.7, and Machine Learning
At the 2019 edition of .NET Conf, streamed online earlier this week, Microsoft announced several new features for the .NET ecosystem. .NET Core, ASP.NET, and EF Core 3.0 were released, together with C# 8.0 and F# 4.7. The new releases have a considerable impact on how Windows Desktop, Web, and Mobile applications are developed. New features and tools for Visual Studio 2019 were also showcased.
-
Preview of C# 8.x
Even though C# 8.0 is still months away, planning has begun for C# 8.x. Some of these features are new, while others were previously considered for C# 8.
-
C# 8 Nullable Reference Types Update
Work continues on nullable refence types for C# 8, revealing edge cases that need to be addressed before the final release and new opportunities for reducing the amount of boilerplate developers have to write.
-
C# 8 Pattern Matching Enhancements
C# 7 laid the groundwork for pattern matching, but a lot of features had to be left on the cutting room floor. With the extra time C# 8 needs, many of these are being picked up.
-
C# 8 Nullable Value Type Enhancements
First introduced in .NET 2, very little has changed for Nullable<T> over the last decade and a half, but that looks like it is about to change. Much of the work going into supporting nullable reference types in C# 8 may be applied to nullable value types.
-
C# Default Interface Methods Update
As support for Default Interface Methods gets closer to completion, potential issues are raised. While much has been accomplished, this is a complex feature and many of the specifics haven’t been settled yet.
-
C# 8 More Small Features
Though C# 8 is supposed to be released this year and the roadmap for C# 8.x and 9 are beginning to be formed, Microsoft is continuing to approve features for the next release.
-
Update on IAsyncDisposable and IAsyncEnumerator
Since InfoQ last covered the async streams proposal, some changes have been made to the design. Most notably is the use of the lightweight ValueTask object.
-
C# 8: Generic Attributes
Attributes have been part of .NET since the beginning. As such, they were created before generics were introduced and never quite caught up. Though supported by the CLR, before this proposal C# didn’t offer the ability to use generic attributes.
-
C# 8: Caller Expression Attribute for Assertions and Automated Testing
Currently C# supports caller info attributes for file name/path, line number, and the name of the calling method or property. With the Caller Expression Attribute proposal, expressions are added to the list.
-
C# 8: Type Inference for the New Keyword
In many situations, there is only one possible type allowed in a given place. And yet C# still requires you to explicitly list the type. If the Target-typed `new` expression proposal is adopted, such boilerplate code will no longer be necessary.
-
First Look at .NET Core 3.0: C# 8, WPF, Windows Forms, and More
The next major version of .NET Core has recently entered Preview stage. .NET Core 3.0 will include support for building desktop apps using Windows Presentation Foundation (WPF), Windows Forms (WinForms), Entity Framework (EF), ASP.NET Core 3.0, C# 8, and .NET Standard 2.1.
-
C# 8 Small Features
While most of the attention is on big ticket items such as default interface methods and nullable references, many small features are also be considered for C# 8. Here is a sampling of things that may make it into future version of C#.
-
Update on C# and F#’s Default Interface Methods
The hotly contested Default Interface Methods feature is also being considered for F#. But this feature may be limited to only .NET Core, putting the whole proposal into jeopardy.