public int IndexOf(String value, int startIndex, int count, StringComparison comparisonType) { // Validate inputs if (value == null) { throw new ArgumentNullException(nameof(value)); } if (startIndex < 0 || startIndex > this.Length) { throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_Index); } if (count < 0 || startIndex > this.Length - count) { throw new ArgumentOutOfRangeException(nameof(count), SR.ArgumentOutOfRange_Count); } switch (comparisonType) { case StringComparison.CurrentCulture: return(FormatProvider.IndexOf(this, value, startIndex, count)); case StringComparison.CurrentCultureIgnoreCase: return(FormatProvider.IndexOfIgnoreCase(this, value, startIndex, count)); case StringComparison.Ordinal: return(FormatProvider.OrdinalIndexOf(this, value, startIndex, count)); case StringComparison.OrdinalIgnoreCase: return(FormatProvider.OrdinalIndexOfIgnoreCase(this, value, startIndex, count)); default: throw new ArgumentException(SR.NotSupported_StringComparison, nameof(comparisonType)); } }