Exclude primitive types when comparing by members #1394
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 primitive types do not have members, it does not make sense to try to compare them by members.
On all but one of the target frameworks two different primitives are currently incorrectly evaluated as being equivalent (#1374).
On net472 it will even hit
"The maximum recursion depth was reached"
.This PR excludes primitive types from being compared by members.
Thought:
Should we add a guard check in
ComparingByMembers
if someone writesComparingByMembers<int>()
and wonders whyint
s are still not compared by members?For those interested in the complete set of primitive types, here are the facts from in .netcoreapp3.0