/// <summary> /// Compares two strings. /// </summary> /// <param name="a">The first string to compare.</param> /// <param name="b">The second string to compare.</param> /// <returns>True if the strings are equal.</returns> public bool Equals(ISpanString a, ISpanString b) { // Find optimized comparison methods. if (a is SpanString1 a1) { if (b is SpanString1 b1) { return(_ignoreCase ? SpanString1.EqualsIgnoreCase(a1, b1) : SpanString1.Equals(a1, b1)); } if (b is SpanString2 b2) { return(_ignoreCase ? SpanString1.EqualsIgnoreCase(a1, b2) : SpanString1.Equals(a1, b2)); } throw new ArgumentException($"Second param 'b' is an unknown SpanString type '{b.GetType().Name}', is this a bug?"); } if (a is SpanString2 a2) { if (b is SpanString1 b1) { return(_ignoreCase ? SpanString2.EqualsIgnoreCase(a2, b1) : SpanString2.Equals(a2, b1)); } if (b is SpanString2 b2) { return(_ignoreCase ? SpanString2.EqualsIgnoreCase(a2, b2) : SpanString2.Equals(a2, b2)); } throw new ArgumentException($"Second param 'b' is an unknown SpanString type '{b.GetType().Name}', is this a bug?"); } throw new ArgumentException($"First param 'a' is an unknown SpanString type '{a.GetType().Name}', is this a bug?"); }
/// <summary> /// Compares two strings. /// </summary> /// <param name="a">The first string to compare.</param> /// <param name="b">The second string to compare.</param> /// <returns>True if the strings are equal.</returns> public bool Equals(SpanString2 a, SpanString2 b) { return(_ignoreCase ? SpanString2.EqualsIgnoreCase(a, b) : a.Equals(b)); }