<Type Name="TextReader" FullName="System.IO.TextReader" FullNameSP="System_IO_TextReader" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class public abstract serializable TextReader extends System.MarshalByRefObject implements System.IDisposable" />
  <TypeSignature Language="C#" Value="public abstract class TextReader : MarshalByRefObject, IDisposable" />
  <MemberOfLibrary>BCL</MemberOfLibrary>
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
  <Base>
    <BaseTypeName>System.MarshalByRefObject</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.IDisposable</InterfaceName>
    </Interface>
  </Interfaces>
  <Docs>
    <summary>
      <para>Represents an object that can read a sequential series of
      characters.</para>
    </summary>
    <remarks>
      <para>
        <see cref="T:System.IO.TextReader" /> is designed for character
   input, whereas the <see cref="T:System.IO.StreamReader" /> is designed for byte input and the
<see cref="T:System.IO.StringReader" />
class is designed for reading from a
string.</para>
      <para>By default, a <see cref="T:System.IO.TextReader" /> is not thread safe. For information on creating a
thread-safe <see cref="T:System.IO.TextReader" />
, see <see cref="M:System.IO.TextReader.Synchronized(System.IO.TextReader)" qualify="true" /> .</para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="family rtspecialname specialname instance void .ctor()" />
      <MemberSignature Language="C#" Value="protected TextReader ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>
          <para>Constructs a new instance of the <see cref="T:System.IO.TextReader" /> class.</para>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Close">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual void Close()" />
      <MemberSignature Language="C#" Value="public virtual void Close ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Closes the current <see cref="T:System.IO.TextReader" /> instance and releases any system
   resources associated with it.</para>
        </summary>
        <remarks>
          <block subset="none" type="note">
            <para>After a call to <see cref="M:System.IO.TextReader.Close" /> , any IO operation on the current
      instance might throw an exception.</para>
          </block>
          <para>
            <block subset="none" type="behaviors">This method is equivalent to <see cref="M:System.IO.TextReader.Dispose(System.Boolean)" />(<see langword=" true" />
).</block>
          </para>
          <para>
            <block subset="none" type="usage">Use this method to
   close the current instance and free any resources associated with
   it.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="C#" Value="public void Dispose ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Dispose">
      <MemberSignature Language="ILASM" Value=".method family hidebysig virtual void Dispose(bool disposing)" />
      <MemberSignature Language="C#" Value="protected virtual void Dispose (bool disposing);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="disposing" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="disposing">
          <see langword="true" /> to release both managed and unmanaged resources; <see langword="false" /> to release only unmanaged resources.</param>
        <summary>
          <para>Releases the unmanaged resources used by the <see cref="T:System.IO.TextReader" /> and 
   optionally releases the managed resources.</para>
        </summary>
        <remarks>
          <para>When the <paramref name="disposing" /> parameter is <see langword="true" />, this method 
   releases all resources held by any managed objects that this <see cref="T:System.IO.TextReader" />
   references. This method invokes the <see langword="Dispose()" /> method of each
   referenced object.</para>
          <para>
            <block subset="none" type="note">
              <see cref="M:System.IO.TextReader.Dispose(System.Boolean)" /> can be called multiple 
times by other objects. When overriding <see cref="M:System.IO.TextReader.Dispose(System.Boolean)" />(<see cref="T:System.Boolean" />), be careful not
to reference objects that have been previously disposed in an earlier call to
<see cref="M:System.IO.TextReader.Dispose(System.Boolean)" /> .</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Null">
      <MemberSignature Language="ILASM" Value=".field public static initOnly class System.IO.TextReader Null" />
      <MemberSignature Language="C#" Value="public static readonly System.IO.TextReader Null;" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.IO.TextReader</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Provides a <see cref="T:System.IO.TextReader" /> with no data to read from.</para>
        </summary>
        <remarks>
          <para>Reading from the <see cref="F:System.IO.TextReader.Null" /> text reader is similar to reading from the end of a
   stream:</para>
          <list type="bullet">
            <item>
              <term>
                <see cref="M:System.IO.TextReader.Read" />()
      and <see cref="M:System.IO.TextReader.Peek" /> methods
      return -1</term>
            </item>
            <item>
              <term>
                <see cref="M:System.IO.TextReader.Read" />
                <see langword="(" />
                <see cref="T:System.Char" />[], <see cref="T:System.Int32" />, <see cref="T:System.Int32" /><see langword=")" /> and <see cref="M:System.IO.TextReader.ReadBlock(System.Char[],System.Int32,System.Int32)" /> methods return zero</term>
            </item>
            <item>
              <term>
                <see cref="M:System.IO.TextReader.ReadLine" /> and <see cref="M:System.IO.TextReader.ReadToEnd" /> methods return
   <see langword="null" />.</term>
            </item>
          </list>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <MemberValue>null</MemberValue>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Peek">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 Peek()" />
      <MemberSignature Language="C#" Value="public virtual int Peek ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para> Reads the next character without changing the state of the reader
      or the character source.</para>
        </summary>
        <returns>
          <para>The next character to be read, or -1 if no more characters are
      available.</para>
        </returns>
        <remarks>
          <para> The position of the <see cref="T:System.IO.TextReader" />
in the source is not changed by this operation.</para>
          <para>
            <block subset="none" type="behaviors">As described above.</block>
          </para>
          <para>
            <block subset="none" type="default">The default implementation
   returns -1.</block>
          </para>
        </remarks>
        <exception cref="T:System.IO.IOException">An I/O error has occurred.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Read">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 Read()" />
      <MemberSignature Language="C#" Value="public virtual int Read ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Reads the next character from the character source and advances the character
      position by one character.</para>
        </summary>
        <returns>
          <para>The next character from the character source represented
      as a <see cref="T:System.Int32" /> , or -1 if at the end
      of the stream.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="behaviors">As described
      above.</block>
          </para>
          <para>
            <block subset="none" type="default">The default implementation
      returns -1.</block>
          </para>
        </remarks>
        <exception cref="T:System.IO.IOException"> An I/O error occurred.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Read">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 Read(class System.Char[] buffer, int32 index, int32 count)" />
      <MemberSignature Language="C#" Value="public virtual int Read (char[] buffer, int index, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Char[]" />
        <Parameter Name="index" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="buffer">A <see cref="T:System.Char" /> array. When this method returns, contains the specified character array with the values between <paramref name="index" /> and (<paramref name="index" /> + <paramref name="count" /> -1) replaced by the characters read from the current source.</param>
        <param name="index">A <see cref="T:System.Int32" /> that specifies the place in <paramref name="buffer " /> at which to begin writing.</param>
        <param name="count">A <see cref="T:System.Int32" /> that specifies the maximum number of characters to read. If the end of the stream is reached before <paramref name="count " />of characters is read into <paramref name="buffer" /> , this method returns. </param>
        <summary>
          <para>Reads at most the specified number of characters from the current character source, and writes them to the provided
      character array.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> containing the number of characters that were read, or zero if there were no more
   characters left to read. Can be less than <paramref name="count" /> if the end of the stream
   has been reached. </para>
        </returns>
        <remarks>
          <para>
            <see cref="M:System.IO.TextReader.ReadBlock(System.Char[],System.Int32,System.Int32)" />
is a blocking version of this method.</para>
          <para>
            <block subset="none" type="behaviors">The provided character array can
   be changed only in the specified range.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="buffer " /> is <see langword="null" />.</exception>
        <exception cref="T:System.ArgumentException">(<paramref name="index" /> + <paramref name="count" /> ) &gt; <paramref name="buffer" /><see langword="." />Length.</exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="index &lt; " />0<paramref name=" " /></para>
          <para>
            <paramref name="-" /> or-</para>
          <para>
            <paramref name="count &lt; " /> 0.</para>
        </exception>
        <exception cref="T:System.IO.IOException">An I/O error occurred.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="ReadBlock">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 ReadBlock(class System.Char[] buffer, int32 index, int32 count)" />
      <MemberSignature Language="C#" Value="public virtual int ReadBlock (char[] buffer, int index, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="buffer" Type="System.Char[]" />
        <Parameter Name="index" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="buffer">A <see cref="T:System.Char" /> array. When this method returns, contains the specified character array with the values between <paramref name="index" /> and <paramref name="(index + count - 1)" /> replaced by the characters read from the current source.</param>
        <param name="index">A <see cref="T:System.Int32" /> that specifies the index in <paramref name="buffer " /> at which to begin writing.</param>
        <param name="count">A <see cref="T:System.Int32" /> that specifies the maximum number of characters to read.</param>
        <summary>
          <para> Reads a
      specified number of characters from the current stream into a
      provided character array.</para>
        </summary>
        <returns>
          <para> A <see cref="T:System.Int32" /> containing the number of characters that were read, or
   zero if there were no more characters left to read. Can be
   less than <paramref name="count" /> if the end of the stream has been reached.</para>
        </returns>
        <remarks>
          <para> The method blocks until either the specified number of
      characters are read, or no more characters are available in the source.</para>
          <para>
            <block subset="none" type="behaviors">As described
      above.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="buffer " /> is <see langword="null" />.</exception>
        <exception cref="T:System.ArgumentException">(<paramref name="index" /> + <paramref name="count" /> - 1) &gt; <paramref name="buffer" /><see langword="." />Length.</exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="index &lt; " />0<paramref name=" " /></para>
          <para>
            <paramref name="-" /> or-</para>
          <para>
            <paramref name="count &lt; " /> 0.</para>
        </exception>
        <exception cref="T:System.IO.IOException"> An I/O error occurred.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="ReadLine">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual string ReadLine()" />
      <MemberSignature Language="C#" Value="public virtual string ReadLine ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para> Reads a line of characters
      from the current character source.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.String" /> containing the next line from the input stream, or
<see langword="null" /> if all lines have
   been read. The returned string does not
   contain the line terminating character.</para>
        </returns>
        <remarks>
          <para> A line is defined as a sequence
      of characters followed by a carriage return (0x000d), a line feed (0x000a), <see cref="P:System.Environment.NewLine" qualify="true" />, or the end of stream marker.</para>
          <para>
            <block subset="none" type="behaviors">As described
      above.</block>
          </para>
        </remarks>
        <exception cref="T:System.IO.IOException"> An I/O error occurred.</exception>
        <exception cref="T:System.OutOfMemoryException">
          <para>There is insufficient memory to allocate a buffer for the returned string.</para>
        </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">The number of characters in the next line is larger than <see cref="F:System.Int32.MaxValue" qualify="true" />.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="ReadToEnd">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual string ReadToEnd()" />
      <MemberSignature Language="C#" Value="public virtual string ReadToEnd ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Reads all characters from the current position in the
      character source
      to the end of the source.</para>
        </summary>
        <returns>
          <para> A string containing all characters from the current
      position to the end of the character
      source.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="behaviors">As
      described above.</block>
          </para>
        </remarks>
        <exception cref="T:System.IO.IOException"> An I/O error occurred.</exception>
        <exception cref="T:System.OutOfMemoryException">There is insufficient memory to allocate a buffer for the returned string.</exception>
        <exception cref="T:System.ArgumentOutOfRangeException">The number of characters from the current position to the end of the underlying stream is larger than <see cref="F:System.Int32.MaxValue" qualify="true" />.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Synchronized">
      <MemberSignature Language="ILASM" Value=".method public hidebysig static class System.IO.TextReader Synchronized(class System.IO.TextReader reader)" />
      <MemberSignature Language="C#" Value="public static System.IO.TextReader Synchronized (System.IO.TextReader reader);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.IO.TextReader</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="reader" Type="System.IO.TextReader" />
      </Parameters>
      <Docs>
        <param name="reader">The <see cref="T:System.IO.TextReader" /> to synchronize.</param>
        <summary>
          <para>Creates a thread-safe wrapper around the specified
   <see cref="T:System.IO.TextReader" />
   instance.</para>
        </summary>
        <returns>
          <para> A thread-safe <see cref="T:System.IO.TextReader" /> .</para>
        </returns>
        <remarks>
          <para>This method returns a <see cref="T:System.IO.TextReader" /> instance that wraps around the specified <see cref="T:System.IO.TextReader" /> instance and restricts concurrent
   access to it by multiple threads.</para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">The <paramref name="reader" /> parameter is <see langword="null" />.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="System.IDisposable.Dispose">
      <MemberSignature Language="C#" Value="void IDisposable.Dispose ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
