using System.Collections; using System.Collections.Generic; namespace System.Unicode { /// Allows enumeration of the code points contained in an encapsulated string. /// /// This enumerable will only allow enumeration of valid UTF-16 strings. /// For incomplete or invalid UTF-16 strings, please use instead. /// public struct CodePointEnumerable : IEnumerable { /// Initializes a new instance of the struct . /// The string whose code points must be enumerated. public CodePointEnumerable(string text) => Text = text ?? throw new ArgumentNullException(nameof(text)); /// Gets the text whose code points are being enumerated. public string Text { get; } /// Gets an enumerator which can be used to enumerate the code points in the text. public CodePointEnumerator GetEnumerator() => new CodePointEnumerator(Text); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } }