public SubsetStringView(string baseString, int startIndex, int endIndex, CountLengthToEndOfBlock counter) { if (startIndex < 0 || (!string.IsNullOrEmpty(baseString) && startIndex >= baseString.Length) || (string.IsNullOrEmpty(baseString) && startIndex != 0)) { throw new ArgumentException("Index out of string range", nameof(startIndex)); } if (endIndex < 0 || (!string.IsNullOrEmpty(baseString) && endIndex > baseString.Length) || (string.IsNullOrEmpty(baseString) && endIndex != 0)) { throw new ArgumentException("Index out of string range", nameof(endIndex)); } if (endIndex < startIndex) { throw new ArgumentException("Incorrect range specified. End index should not be smaller than start index.", nameof(endIndex)); } m_BaseString = baseString; m_BaseStringLength = baseString?.Length ?? 0; var length = endIndex - startIndex; m_Counts = new int[length]; m_Indexes = new List <int>(length); for (var i = startIndex; i < endIndex; ++i) { m_Indexes.Add(i); } counter(baseString, m_Counts, startIndex, endIndex); }
public SubsetStringView(string baseString, int startIndex, CountLengthToEndOfBlock counter) : this(baseString, startIndex, baseString.Length, counter) { }
public SubsetStringView(string baseString, CountLengthToEndOfBlock counter) : this(baseString, 0, baseString.Length, counter) { }