public override int GetHashCode(string obj) { if (obj == null) { throw new ArgumentNullException(nameof(obj)); } int length = DiagnosticIdPrefix.GetPrefixLength(obj); return(StringComparer.Ordinal.GetHashCode(obj.Substring(0, length))); }
public override bool Equals(string x, string y) { if (object.ReferenceEquals(x, y)) { return(true); } if (x == null) { return(false); } if (y == null) { return(false); } int length1 = DiagnosticIdPrefix.GetPrefixLength(x); int length2 = DiagnosticIdPrefix.GetPrefixLength(y); return(length1 == length2 && string.Compare(x, 0, y, 0, length1, StringComparison.Ordinal) == 0); }
public override int Compare(string x, string y) { if (object.ReferenceEquals(x, y)) { return(0); } if (x == null) { return(-1); } if (y == null) { return(1); } int length1 = DiagnosticIdPrefix.GetPrefixLength(x); int length2 = DiagnosticIdPrefix.GetPrefixLength(y); if (length1 == length2) { return(string.Compare(x, 0, y, 0, length1, StringComparison.Ordinal)); } int length = Math.Min(length1, length2); int result = string.Compare(x, 0, y, 0, length, StringComparison.Ordinal); if (result != 0) { return(result); } return(length1.CompareTo(length2)); }