C#: Adds version 8 and expands nullability to reference types (#1632) #2694
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Relaxes nullability check for C# 8+ targeting. C# 8 introduced nullable reference types, thereby removing the restriction that only value types can be made nullable.
Related Issue
(#1632)
Motivation and Context
Specifically when using System.Text.Json, the new nullable ignore attribute does not trigger Roslyn warning CS8601, leading to potential runtime null reference exceptions.
Previous Behaviour / Output
Previously, reference types such as
string
would not include the?
nullability indicator.New Behaviour / Output
Now, all C# types (reference and value) will include
?
when optional, since the serialized data may contain null values for those properties per the specification.How Has This Been Tested?
Ran before and after examples in a Docker environment.
Screenshots (if appropriate):