Skip to content

CA1065 should not be raised for ArgumentNullException in IEqualityComparer<T>.GetHashCode #2994

Open

Description

Analyzer package

Microsoft.CodeAnalysis.FxCopAnalyzers

Package Version

v2.9.2

Diagnostic ID

CA1065

Repro steps

    public class SomeEqualityComparer : IEqualityComparer<string>
    {
        public bool Equals(string x, string y)
        {
            return true;
        }

        public int GetHashCode(string obj)
        {
            if (obj == null)
            {
                // This raises CA1065!
                throw new ArgumentNullException(nameof(obj));
            }

            return 0;
        }
    }

Expected behavior

No CA violation raised.

The documented expectation for IEqualityComparer<T>.GetHashCode is to throw null when given a null object. See: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.iequalitycomparer-1.gethashcode?redirectedfrom=MSDN&view=netframework-4.8#exceptions

Actual behavior

CA1065 is raised.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions