Я просматриваю диапазоны C # 8 и не могу понять, как именно применение Range ограничено только массивами и строками.
Я думал, что это как-то связано с реализациями массивов интерфейсов.Он реализует ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable, IList<T>, ICollection<T>, IEnumerable<T>, IReadOnlyList<T>, IReadOnlyCollection<T>
, но когда я приводю new int[0]
к любому из них и пытаюсь использовать диапазон на нем, появляется ошибка компиляции (либо невозможно применить индекс, либо невозможно преобразовать из индекса в int).
Этокак-то жестко запрограммирован для использования только с массивами и строками, или я что-то пропустил?