<Type Name="UTF8Encoding" FullName="System.Text.UTF8Encoding" FullNameSP="System_Text_UTF8Encoding" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class public serializable UTF8Encoding extends System.Text.Encoding" />
  <TypeSignature Language="C#" Value="public class UTF8Encoding : System.Text.Encoding" />
  <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>
    <AssemblyVersion>4.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.Text.Encoding</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>
      <para> Represents a UTF8 character <see cref="T:System.Text.Encoding" />.</para>
    </summary>
    <remarks>
      <para>
        <see cref="T:System.Text.UTF8Encoding" />
encodes Unicode characters
using the UTF-8 encoding (UCS Transformation Format, 8-bit form). This encoding supports
all Unicode character values.</para>
      <block subset="none" type="note">
        <para>UTF-8 encodes Unicode characters with a variable number of bytes per
      character. This encoding is optimized for the lower 127 ASCII characters,
      yielding an efficient mechanism to encode English in an internationalizable way.
      The UTF-8 identifier is the Unicode byte order mark (0xFEFF) written in UTF-8
      (0xEF 0xBB 0xBF). The byte order mark is used to distinguish UTF-8 text from
      other encodings.</para>
        <para>This class offers an error-checking feature that can be
      turned on when an instance of the class is constructed. Certain methods in this
      class check for invalid sequences of surrogate pairs. If error-checking is
      turned on and an invalid sequence is detected, <see cref="T:System.ArgumentException" /> is
      thrown. If error-checking is not turned on and an invalid sequence is
      detected, no exception is thrown and execution continues in a method-defined
      manner. For more information regarding surrogate pairs, see <see cref="T:System.Globalization.UnicodeCategory" />
      
      .</para>
      </block>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor()" />
      <MemberSignature Language="C#" Value="public UTF8Encoding ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>
          <para> Constructs a new instance of the 
   <see cref="T:System.Text.UTF8Encoding" />
   class.</para>
        </summary>
        <remarks>
          <para>This constructor is equivalent to <see cref="T:System.Text.UTF8Encoding" />
(<see langword="false" />, <see langword="false" /> ).</para>
          <para>
            <block subset="none" type="note">By default, this constructor turns
   error-checking off for the new instance.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(bool encoderShouldEmitUTF8Identifier)" />
      <MemberSignature Language="C#" Value="public UTF8Encoding (bool encoderShouldEmitUTF8Identifier);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="encoderShouldEmitUTF8Identifier" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="encoderShouldEmitUTF8Identifier">A <see cref="T:System.Boolean" /> that indicates whether the Unicode byte order mark in UTF-8 is recognized or emitted when reading from or writing to a <see cref="T:System.IO.Stream" /> .</param>
        <summary>
          <para> Constructs a new instance of the 
   <see cref="T:System.Text.UTF8Encoding" /> class with the specified <see cref="T:System.Boolean" /> that
      indicates whether the Unicode byte order mark in UTF-8 is recognized or emitted
      when reading from or writing to a <see cref="T:System.IO.Stream" />.</para>
        </summary>
        <remarks>
          <para>This constructor is equivalent to <see cref="T:System.Text.UTF8Encoding" />
(<paramref name="encoderShouldEmitUTF8Identifier" />,
<see langword="false" /> ).</para>
          <para>
            <block subset="none" type="note">By default, this constructor turns
   error-checking off for the new instance.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes)" />
      <MemberSignature Language="C#" Value="public UTF8Encoding (bool encoderShouldEmitUTF8Identifier, bool throwOnInvalidBytes);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="encoderShouldEmitUTF8Identifier" Type="System.Boolean" />
        <Parameter Name="throwOnInvalidBytes" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="encoderShouldEmitUTF8Identifier">A <see cref="T:System.Boolean" /> that indicates whether the Unicode byte order mark in UTF-8 is recognized or emitted when reading from or writing to a <see cref="T:System.IO.Stream" /> .</param>
        <param name="throwOnInvalidBytes">A <see cref="T:System.Boolean" /> that indicates whether error-checking is turned on for the current instance.</param>
        <param name="throwOnInvalidBytes">To be added.</param>
        <summary>
          <para>Constructs a new instance of the 
   <see cref="T:System.Text.UTF8Encoding" /> class using the specified <see cref="T:System.Boolean" /> flags.</para>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="Equals">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual bool Equals(object value)" />
      <MemberSignature Language="C#" Value="public override bool Equals (object value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="value" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="value">A <see cref="T:System.Object" /> to compare with the current instance.</param>
        <summary>
          <para>Determines whether the current instance and the
      specified <see cref="T:System.Object" /> represent the
      same type and value.</para>
        </summary>
        <returns>
          <para>
            <see langword="true" /> if value is a <see cref="T:System.Text.UTF8Encoding" /> and represents the same type and value as the 
   current instance; otherwise, <see langword="false" />.</para>
        </returns>
        <remarks>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Object.Equals(System.Object)" qualify="true" />.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetByteCount">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetByteCount(string chars)" />
      <MemberSignature Language="C#" Value="public override int GetByteCount (string chars);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="chars" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="chars">
          <para>A <see cref="T:System.String" /> to encode as a <see cref="T:System.Text.UTF8Encoding" />.</para>
        </param>
        <summary>
          <para>Determines the number of bytes required to encode the 
      characters in the specified <see cref="T:System.String" /> as
      a <see cref="T:System.Text.UTF8Encoding" />.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that specifies the number of bytes necessary to encode <paramref name="chars" /> as a <see cref="T:System.Text.UTF8Encoding" />. </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is detected, the invalid characters are
      ignored and do not affect the return value, and no exception is
      thrown.</para>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Text.Encoding.GetByteCount(System.Char[])" />.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="chars " />is <see langword="null" />. </exception>
        <exception cref="T:System.ArgumentException">
          <para>Error-checking is turned on for the current instance and <paramref name="chars" /> contains an invalid surrogate sequence.</para>
        </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>The return value is greater than <see cref="F:System.Int32.MaxValue" />.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetByteCount">
      <MemberSignature Language="C#" Value="public override int GetByteCount (char* chars, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="chars" Type="System.Char*" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="chars">To be added.</param>
        <param name="count">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.CLSCompliant(false)</AttributeName>
        </Attribute>
        <Attribute>
          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="GetByteCount">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetByteCount(class System.Char[] chars, int32 index, int32 count)" />
      <MemberSignature Language="C#" Value="public override int GetByteCount (char[] chars, int index, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="chars" Type="System.Char[]" />
        <Parameter Name="index" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="chars">The <see cref="T:System.Char" /> array to encode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <param name="index">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="chars" /> to encode. </param>
        <param name="count">A <see cref="T:System.Int32" /> that specifies the number of characters to encode. </param>
        <summary>
          <para> Determines the number of bytes required to encode the specified
      range of characters in the specified Unicode character array as a <see cref="T:System.Text.UTF8Encoding" />.
      </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> containing the number of bytes necessary to encode the range in <paramref name="chars" /> from
<paramref name="index" /> to <paramref name="index" /> + <paramref name="count" /> - 1 as a <see cref="T:System.Text.UTF8Encoding" />. </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is detected, the invalid
      characters are ignored and do not affect the return value, and no exception
      is thrown.</para>
          <block subset="none" type="note">
            <para>This method overrides
      <see cref="M:System.Text.Encoder.GetByteCount(System.Char[],System.Int32,System.Int32,System.Boolean)" />
      .
      </para>
          </block>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="chars " /> is <see langword="null" /> . </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>The return value is greater than <see cref="F:System.Int32.MaxValue" />.</para>
          <para>-or-</para>
          <para>
            <paramref name="index" /> or <paramref name="count" /> is less than zero. </para>
          <para>-or-</para>
          <para>
            <paramref name="index" /> and <paramref name="count" /> do not specify a valid range in <paramref name="chars" /> (i.e. (<paramref name="index" /> + <paramref name="count" />) &gt; <paramref name="chars" />.Length).</para>
        </exception>
        <exception cref="T:System.ArgumentException">
          <para>Error-checking is turned on for the current instance and <paramref name="chars" /> contains an invalid surrogate sequence.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetBytes">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual class System.Byte[] GetBytes(string s)" />
      <MemberSignature Language="C#" Value="public override byte[] GetBytes (string s);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="s" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="s">The <see cref="T:System.String" /> to encode as a <see cref="T:System.Text.UTF8Encoding" />.</param>
        <summary>
          <para>Encodes the specified <see cref="T:System.String" /> as a <see cref="T:System.Text.UTF8Encoding" />.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Byte" /> array
   containing the values encoded from <paramref name="s" /> as a <see cref="T:System.Text.UTF8Encoding" />.</para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate
      sequence is detected, the invalid characters are ignored and are not encoded
      into the returned <see cref="T:System.Byte" /> array, and no exception is
      thrown.</para>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Text.Encoding.GetBytes(System.Char[])" />.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentException">
          <para>Error-checking is turned on for the current instance and <paramref name="s" /> contains an invalid surrogate sequence.</para>
        </exception>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="s" /> is <see langword="null" />.</exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetBytes">
      <MemberSignature Language="C#" Value="public override int GetBytes (char* chars, int charCount, byte* bytes, int byteCount);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="chars" Type="System.Char*" />
        <Parameter Name="charCount" Type="System.Int32" />
        <Parameter Name="bytes" Type="System.Byte*" />
        <Parameter Name="byteCount" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="chars">To be added.</param>
        <param name="charCount">To be added.</param>
        <param name="bytes">To be added.</param>
        <param name="byteCount">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.CLSCompliant(false)</AttributeName>
        </Attribute>
        <Attribute>
          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="GetBytes">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetBytes(class System.Char[] chars, int32 charIndex, int32 charCount, class System.Byte[] bytes, int32 byteIndex)" />
      <MemberSignature Language="C#" Value="public override int GetBytes (char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="chars" Type="System.Char[]" />
        <Parameter Name="charIndex" Type="System.Int32" />
        <Parameter Name="charCount" Type="System.Int32" />
        <Parameter Name="bytes" Type="System.Byte[]" />
        <Parameter Name="byteIndex" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="chars">The <see cref="T:System.Char" /> array to encode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <param name="charIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="chars" /> to encode. </param>
        <param name="charCount">A <see cref="T:System.Int32" /> that specifies the number of characters to encode. </param>
        <param name="bytes">The <see cref="T:System.Byte" /> array to encode into. </param>
        <param name="byteIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="bytes" /> to encode into. </param>
        <summary>
          <para>Encodes the specified range of the specified <see cref="T:System.Char" /> array into the specified range of the
   specified <see cref="T:System.Byte" /> array as a <see cref="T:System.Text.UTF8Encoding" />.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that indicates the number of bytes encoded into <paramref name="bytes" /> as a <see cref="T:System.Text.UTF8Encoding" />. </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is
      detected, the invalid characters are ignored and are not encoded into
   <paramref name="bytes" />, and no exception is thrown.</para>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetBytes(System.Char[])" />.</para>
            <para>
              <see cref="M:System.Text.UTF8Encoding.GetByteCount(System.Char[],System.Int32,System.Int32)" /> can be used to determine the exact number of bytes that will be
   produced for a given range of characters. Alternatively, <see cref="M:System.Text.UTF8Encoding.GetMaxByteCount(System.Int32)" /> can be used to determine the maximum
   number of bytes that will be produced for a specified number of characters,
   regardless of the actual character values.</para>
          </block>
        </remarks>
        <exception cref="T:System.ArgumentException">
          <para>
            <paramref name="bytes" /> does not contain sufficient space to store the encoded characters.</para>
          <para>-or-</para>
          <para>Error-checking is turned on for the current instance and <paramref name="chars" /> contains an invalid surrogate sequence.</para>
        </exception>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="chars" /> or <paramref name="bytes" /> is <see langword="null" />. </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="charIndex" />, <paramref name="charCount" />, or <paramref name="byteIndex" /> is less than zero.</para>
          <para>-or-</para>
          <para>(<paramref name="chars" />.Length - <paramref name="charIndex" />) &lt; <paramref name="charCount" />.</para>
          <para>-or-</para>
          <para>
            <paramref name="byteIndex" /> &gt; <paramref name="bytes" />.Length.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetBytes">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetBytes(string s, int32 charIndex, int32 charCount, class System.Byte[] bytes, int32 byteIndex)" />
      <MemberSignature Language="C#" Value="public override int GetBytes (string s, int charIndex, int charCount, byte[] bytes, int byteIndex);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="s" Type="System.String" />
        <Parameter Name="charIndex" Type="System.Int32" />
        <Parameter Name="charCount" Type="System.Int32" />
        <Parameter Name="bytes" Type="System.Byte[]" />
        <Parameter Name="byteIndex" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="s">The <see cref="T:System.String" /> to encode as a <see cref="T:System.Text.UTF8Encoding" /> .</param>
        <param name="charIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="s" /> to encode.</param>
        <param name="charCount">A <see cref="T:System.Int32" /> that specifies the number of characters to encode.</param>
        <param name="bytes">The <see cref="T:System.Byte" /> array to encode into.</param>
        <param name="byteIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="bytes" /> to encode into.</param>
        <param name="s">To be added.</param>
        <param name="charIndex">To be added.</param>
        <param name="charCount">To be added.</param>
        <param name="bytes">To be added.</param>
        <param name="byteIndex">To be added.</param>
        <summary>
          <para>Encodes the specified range of the specified <see cref="T:System.String" /><see langword=" " />into the specified
   range of the specified <see cref="T:System.Byte" /> array as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that indicates the number of bytes encoded into <paramref name="bytes" /> as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is
      detected, the invalid characters are ignored and are not encoded into
   <paramref name="bytes" />, and no exception is thrown.</para>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Text.Encoding.GetBytes(System.Char[])" />.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentException">
          <para>
            <paramref name="bytes" /> does not contain sufficient space to store the encoded characters.</para>
          <para>-or-</para>
          <para>Error-checking is turned on for the current instance and <paramref name="chars" /> contains an invalid surrogate sequence.</para>
        </exception>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="chars " /> or <paramref name="bytes " />is <see langword="null" /> . </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="charIndex" />, <paramref name="charCount" />, or <paramref name="byteIndex" /> is less than zero.</para>
          <para>-or-</para>
          <para>(<paramref name="s" />.Length - <paramref name="charIndex" />) &lt; <paramref name="charCount" />.</para>
          <para>-or-</para>
          <para>
            <paramref name="byteIndex" /> &gt;= <paramref name="bytes" />.Length.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetCharCount">
      <MemberSignature Language="C#" Value="public override int GetCharCount (byte* bytes, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bytes" Type="System.Byte*" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bytes">To be added.</param>
        <param name="count">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.CLSCompliant(false)</AttributeName>
        </Attribute>
        <Attribute>
          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="GetCharCount">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetCharCount(class System.Byte[] bytes, int32 index, int32 count)" />
      <MemberSignature Language="C#" Value="public override int GetCharCount (byte[] bytes, int index, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bytes" Type="System.Byte[]" />
        <Parameter Name="index" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bytes">The <see cref="T:System.Byte" /> array to decode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <param name="index">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="bytes" /> to decode. </param>
        <param name="count">A <see cref="T:System.Int32" /> that specifies the number of bytes to decode. </param>
        <summary>
          <para>Returns the number of characters produced by decoding the specified range of
      the specified <see cref="T:System.Byte" /> array as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that indicates the number of characters produced by decoding the range in <paramref name="bytes " />from
<paramref name="index " />to <paramref name="index " />+ <paramref name="count" /> - 1 as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is detected, the invalid bytes are
      ignored and do not affect the return value, and no exception is
      thrown.</para>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Text.Encoding.GetCharCount(System.Byte[])" />.</block>
          </para>
        </remarks>
        <exception cref="T:System.ArgumentNullException">
          <paramref name="bytes " /> is <see langword="null" />. </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="index " /> or <paramref name="count " /> is less than zero.</para>
          <para>-or-</para>
          <para>
            <paramref name="index " /> and <paramref name="count " /> do not specify a valid range in <paramref name="bytes" /> (i.e. (<paramref name="index" /> + <paramref name="count" />) &gt; <paramref name="bytes" />.Length).</para>
        </exception>
        <exception cref="T:System.ArgumentException">
          <para>Error-checking is turned on for the current instance and <paramref name="bytes" /> contains an invalid surrogate sequence.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetChars">
      <MemberSignature Language="C#" Value="public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bytes" Type="System.Byte*" />
        <Parameter Name="byteCount" Type="System.Int32" />
        <Parameter Name="chars" Type="System.Char*" />
        <Parameter Name="charCount" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bytes">To be added.</param>
        <param name="byteCount">To be added.</param>
        <param name="chars">To be added.</param>
        <param name="charCount">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.CLSCompliant(false)</AttributeName>
        </Attribute>
        <Attribute>
          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="GetChars">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetChars(class System.Byte[] bytes, int32 byteIndex, int32 byteCount, class System.Char[] chars, int32 charIndex)" />
      <MemberSignature Language="C#" Value="public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bytes" Type="System.Byte[]" />
        <Parameter Name="byteIndex" Type="System.Int32" />
        <Parameter Name="byteCount" Type="System.Int32" />
        <Parameter Name="chars" Type="System.Char[]" />
        <Parameter Name="charIndex" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bytes">The <see cref="T:System.Byte" /> array to decode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <param name="byteIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="bytes" /> to decode. </param>
        <param name="byteCount">A <see cref="T:System.Int32" /> that specifies the number of bytes to decode. </param>
        <param name="chars">The <see cref="T:System.Char" /> array to decode into. </param>
        <param name="charIndex">A <see cref="T:System.Int32" /> that specifies the first index of <paramref name="chars" /> to decode into. </param>
        <summary>
          <para>Decodes the specified range of the specified <see cref="T:System.Byte" /> array into the specified range of the
   specified <see cref="T:System.Char" /> array as a <see cref="T:System.Text.UTF8Encoding" />
   . </para>
        </summary>
        <returns>
          <para>The number of characters decoded into <paramref name="chars" /> as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </returns>
        <remarks>
          <para>If error-checking is turned off and an invalid surrogate sequence is
      detected, the invalid bytes are ignored and are not encoded into <paramref name="chars" />, and no exception is thrown.</para>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetChars(System.Byte[])" /> .</para>
            <para>
              <see cref="M:System.Text.UTF8Encoding.GetCharCount(System.Byte[],System.Int32,System.Int32)" /> can be used to determine the
   exact number of characters that will be produced for a specified range of bytes.
   Alternatively, <see cref="M:System.Text.UTF8Encoding.GetMaxCharCount(System.Int32)" />
   can be used to determine the maximum number of characters that will be produced
   for a specified number of bytes, regardless of the actual byte values.</para>
          </block>
        </remarks>
        <exception cref="T:System.ArgumentException">
          <para>
            <paramref name="chars" /> does not contain sufficient space to store the decoded characters.</para>
          <para>-or-</para>
          <para>Error-checking is turned on for the current instance and <paramref name="bytes" /> contains an invalid surrogate sequence.</para>
        </exception>
        <exception cref="T:System.ArgumentNullException">
          <para>
            <paramref name="bytes " /> or <paramref name="chars " /> is <see langword="null" />. </para>
        </exception>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="byteIndex" />, <paramref name="byteCount" />, or <paramref name="charIndex " /> is less than zero.</para>
          <para> -or-</para>
          <para> (<paramref name="bytes" />.Length - <paramref name="byteIndex" />) &lt; <paramref name="byteCount" />.</para>
          <para>-or-</para>
          <para>
            <paramref name="charIndex" /> &gt; <paramref name="chars" />.Length.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetDecoder">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual class System.Text.Decoder GetDecoder()" />
      <MemberSignature Language="C#" Value="public override System.Text.Decoder GetDecoder ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Text.Decoder</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Returns a <see cref="T:System.Text.Decoder" /> for the current instance.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Text.Decoder" /> for the current instance.</para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetDecoder" /> .</para>
            <para>Contrary to <see cref="M:System.Text.UTF8Encoding.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)" /> , a decoder can convert partial
   sequences of bytes into partial sequences of characters by maintaining the
   appropriate state between the conversions.</para>
          </block>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetEncoder">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual class System.Text.Encoder GetEncoder()" />
      <MemberSignature Language="C#" Value="public override System.Text.Encoder GetEncoder ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Text.Encoder</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Returns a <see cref="T:System.Text.Encoder" /> for the current instance.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Text.Encoder" /> for the current instance.</para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para>This method overrides <see cref="M:System.Text.Encoding.GetEncoder" qualify="true" />.</para>
            <para>Contrary to <see cref="M:System.Text.UTF8Encoding.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32)" /> , an encoder can convert partial
   sequences of characters into partial sequences of bytes by maintaining the
   appropriate state between the conversions.</para>
          </block>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetHashCode">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetHashCode()" />
      <MemberSignature Language="C#" Value="public override int GetHashCode ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Generates a hash code for the current instance.</para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" />
value containing a hash code for the current instance</para>
        </returns>
        <remarks>
          <para>The algorithm used to generate the hash code is
      unspecified.</para>
          <para>
            <block subset="none" type="note">This method overrides <see cref="M:System.Object.GetHashCode" qualify="true" />.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetMaxByteCount">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetMaxByteCount(int32 charCount)" />
      <MemberSignature Language="C#" Value="public override int GetMaxByteCount (int charCount);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="charCount" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="charCount">A <see cref="T:System.Int32" /> that specifies the number of characters to encode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <summary>
          <para>Returns the maximum number of bytes required to encode
      the specified number of characters as a <see cref="T:System.Text.UTF8Encoding" />, regardless of the actual character
      values. </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that specifies the maximum number of bytes required to encode <paramref name="charCount" /> characters as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetMaxByteCount(System.Int32)" /> .</para>
            <para> This method can be used to determine an appropriate
      buffer size for byte arrays passed to <see cref="M:System.Text.UTF8Encoding.GetBytes(System.Char[],System.Int32,System.Int32,System.Byte[],System.Int32)" />. Using
      this minimum buffer size can help ensure that no buffer overflow exceptions will
      occur.</para>
          </block>
        </remarks>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="charCount" /> &lt; 0.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetMaxCharCount">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual int32 GetMaxCharCount(int32 byteCount)" />
      <MemberSignature Language="C#" Value="public override int GetMaxCharCount (int byteCount);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="byteCount" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="byteCount">A <see cref="T:System.Int32" /> that specifies the number of bytes to decode as a <see cref="T:System.Text.UTF8Encoding" /> . </param>
        <summary>
          <para>Returns the maximum number of characters produced by
      decoding the specified number of bytes as a <see cref="T:System.Text.UTF8Encoding" />, regardless of the actual byte
      values. </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Int32" /> that specifies the maximum number of characters produced by decoding <paramref name="byteCount" /> bytes as a <see cref="T:System.Text.UTF8Encoding" /> . </para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetMaxCharCount(System.Int32)" /> .</para>
            <para> This method can be used to determine an appropriate minimum
      buffer size for character arrays passed to <see cref="M:System.Text.UTF8Encoding.GetChars(System.Byte[],System.Int32,System.Int32,System.Char[],System.Int32)" />
      . Using
      this minimum buffer size can help ensure that no buffer overflow exceptions will
      occur.
      </para>
          </block>
        </remarks>
        <exception cref="T:System.ArgumentOutOfRangeException">
          <para>
            <paramref name="byteCount" /> &lt; 0.</para>
        </exception>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetPreamble">
      <MemberSignature Language="ILASM" Value=".method public hidebysig virtual class System.Byte[] GetPreamble()" />
      <MemberSignature Language="C#" Value="public override byte[] GetPreamble ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Byte[]</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para> Returns the bytes used at the beginning of a stream to determine which
      encoding a file was created with. </para>
        </summary>
        <returns>
          <para>A <see cref="T:System.Byte" /> array
   containing the UTF-8 encoding preamble.</para>
        </returns>
        <remarks>
          <block subset="none" type="note">
            <para> This method overrides <see cref="M:System.Text.Encoding.GetPreamble" qualify="true" /> .</para>
            <para>
              <see cref="M:System.Text.UTF8Encoding.GetPreamble" /> returns the Unicode byte order mark
   (U+FEFF) written in UTF-8 (0xef, 0xbb, 0xbf) if this instance
   was constructed with a request to emit the UTF-8 identifier.</para>
          </block>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
    </Member>
    <Member MemberName="GetString">
      <MemberSignature Language="C#" Value="public override string GetString (byte[] bytes, int index, int count);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="bytes" Type="System.Byte[]" />
        <Parameter Name="index" Type="System.Int32" />
        <Parameter Name="count" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="bytes">To be added.</param>
        <param name="index">To be added.</param>
        <param name="count">To be added.</param>
        <summary>To be added.</summary>
        <returns>To be added.</returns>
        <remarks>To be added.</remarks>
        <since version=".NET 2.0" />
      </Docs>
      <AssemblyInfo>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Attributes>
        <Attribute>
          <AttributeName>System.Runtime.InteropServices.ComVisible(false)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
