/// <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()));