C#: Adds version 8 and expands nullability to reference types (#1632) #2694
+8
−4
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
stringwould 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):