Cleanup ! operator usage in FallbackIfEmpty #808
Merged
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.
As part of reviewing nullable reference annotations (#803), this PR attempts to simplify usage of the
!
operator in the internals ofFallbackIfEmpty.cs
. No public APIs are affected.The following line from the code prior to this PR will cause a compiler warning CS8619 (nullability of reference types in source type doesn't match target type):
Because potential null values are passed to
FallbackIfEmptyImpl
, the return value will beIEnumerable<T?>
.One solution would be to use another
!
at the end of the method call. However, the overuse of!
doesn't feel very clean. Also, the signature ofFallbackIfEmptyImpl
doesn't seem to signal intent as clearly as making the fallback values nullable. This PR also brings some consistency, since thefallback
collection is already nullable.Now that the fallback values are nullable, we can remove the
!
from each of the defaults passed toFallbackIfEmptyImpl
, but we need to use the!
operator on the fallback values when returning them. This seems a reasonable tradeoff to clean up this file, and should be safe considering the private accessibility of the method.