Esempio n. 1
0
        /// <summary>
        /// Calculates a HashCode for a character span
        /// </summary>
        /// <param name="span">The span to calculate</param>
        /// <param name="comparisonType">The string comparison to use for the hash calculation</param>
        /// <returns>The matching hash code</returns>
        public static int GetHashCode(this ReadOnlySpan <char> span, StringComparison comparisonType)
        {
            // TODO: Implement a proper GetHashCode for .Net Standard
#if NETSTANDARD2_1
            return(span.AsString().GetHashCode(comparisonType));
#elif NETSTANDARD2_0
            return((comparisonType switch
            {
                StringComparison.Ordinal => StringComparer.Ordinal,
                StringComparison.OrdinalIgnoreCase => StringComparer.OrdinalIgnoreCase,
                StringComparison.InvariantCulture => StringComparer.InvariantCulture,
                StringComparison.InvariantCultureIgnoreCase => StringComparer.InvariantCultureIgnoreCase,
                StringComparison.CurrentCulture => StringComparer.CurrentCulture,
                StringComparison.CurrentCultureIgnoreCase => StringComparer.CurrentCultureIgnoreCase,
                _ => throw new ArgumentOutOfRangeException(nameof(comparisonType))
            }).GetHashCode(span.AsString()));