public long Read (long offset, char [] buffer, int offsetInBuffer, int count) { if (count > MaxLength || count > buffer.Length || count < 0 || ((offsetInBuffer + count) > buffer.Length)) throw new ArgumentOutOfRangeException ("Parameter name: count"); if (offset < 0 || offset > MaxLength) throw new ArgumentOutOfRangeException ("Parameter name: offset"); if (offsetInBuffer < 0 || offsetInBuffer > buffer.Length) throw new ArgumentOutOfRangeException ("Parameter name: offsetInBuffer"); if (buffer == null) throw new ArgumentNullException ("Parameter name: buffer"); Array.Copy (this.buffer, offset, buffer, offsetInBuffer, count - offset); return (count - offset); }