using System; using System.Collections.Generic; using System.Linq; namespace NModbus.Unme.Common { internal static class SequenceUtility { public static IEnumerable Slice(this IEnumerable source, int startIndex, int size) { if (source == null) { throw new ArgumentNullException(nameof(source)); } var enumerable = source as T[] ?? source.ToArray(); int num = enumerable.Count(); if (startIndex < 0 || num < startIndex) { throw new ArgumentOutOfRangeException(nameof(startIndex)); } if (size < 0 || startIndex + size > num) { throw new ArgumentOutOfRangeException(nameof(size)); } return enumerable.Skip(startIndex).Take(size); } } }