StringSegmentComparer
Compares two StringSegment objects.
using System;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace Microsoft.Extensions.Primitives
{
[NullableContext(1)]
[Nullable(0)]
public class StringSegmentComparer : IComparer<StringSegment>, IEqualityComparer<StringSegment>
{
public static StringSegmentComparer Ordinal { get; } = new StringSegmentComparer(StringComparison.Ordinal, StringComparer.Ordinal);
public static StringSegmentComparer OrdinalIgnoreCase { get; } = new StringSegmentComparer(StringComparison.OrdinalIgnoreCase, StringComparer.OrdinalIgnoreCase);
private StringComparison Comparison { get; }
private StringComparer Comparer { get; }
private StringSegmentComparer(StringComparison comparison, StringComparer comparer)
{
Comparison = comparison;
Comparer = comparer;
}
public int Compare(StringSegment x, StringSegment y)
{
return StringSegment.Compare(x, y, Comparison);
}
public bool Equals(StringSegment x, StringSegment y)
{
return StringSegment.Equals(x, y, Comparison);
}
public int GetHashCode(StringSegment obj)
{
return string.GetHashCode(obj.AsSpan(), Comparison);
}
}
}