Пример #1
0
        public int Compare(ProblemString x, ProblemString y)
        {
            var xStringPart             = x.RawString.AsSpan(x.PointIndex + 1);
            var yStringPart             = y.RawString.AsSpan(y.PointIndex + 1);
            var stringPartCompareResult = MemoryExtensions.CompareTo(xStringPart, yStringPart, StringComparison.Ordinal);

            return(stringPartCompareResult == 0
                ? x.Number - y.Number
                : stringPartCompareResult);
        }
Пример #2
0
        bool IEqualityComparer.Equals(object?x, object?y)
        {
            ReadOnlySpan <char> left = x switch
            {
                string str => str,
                char[] chars => chars,
                                _ => x?.ToString()
            };
            ReadOnlySpan <char> right = y switch
            {
                string str => str,
                char[] chars => chars,
                                _ => x?.ToString()
            };

            return(MemoryExtensions.Equals(left, right, _comparison));
        }

        int IEqualityComparer.GetHashCode(object obj)
        {
            ReadOnlySpan <char> span = obj switch
            {
                string str => str,
                char[] chars => chars,
                                _ => obj?.ToString()
            };

            return(string.GetHashCode(span, _comparison));
        }

        int IComparer.Compare(object?x, object?y)
        {
            ReadOnlySpan <char> left = x switch
            {
                string str => str,
                char[] chars => chars,
                                _ => x?.ToString()
            };
            ReadOnlySpan <char> right = y switch
            {
                string str => str,
                char[] chars => chars,
                                _ => x?.ToString()
            };

            return(MemoryExtensions.CompareTo(left, right, _comparison));
        }
    }
}
Пример #3
0
 public int Compare(char[]?x, char[]?y)
 {
     return(MemoryExtensions.CompareTo(x, y, _comparison));
 }
Пример #4
0
 public int Compare(string?x, string?y)
 {
     return(MemoryExtensions.CompareTo(x, y, _comparison));
 }
Пример #5
0
 public int Compare(ReadOnlySpan <char> x, ReadOnlySpan <char> y)
 {
     return(MemoryExtensions.CompareTo(x, y, _comparison));
 }