Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Encoding.GetMaxCharCount-Methode

Berechnet beim Überschreiben in einer abgeleiteten Klasse die maximale Anzahl an Zeichen, die beim Decodieren der angegebenen Anzahl von Bytes erzeugt wird.

Namespace:  System.Text
Assembly:  mscorlib (in mscorlib.dll)
public abstract int GetMaxCharCount(
	int byteCount
)

Parameter

byteCount
Typ: System.Int32
Die Anzahl der zu decodierenden Bytes.

Rückgabewert

Typ: System.Int32
Die maximale Anzahl von Zeichen, die beim Decodieren der angegebenen Anzahl von Bytes erzeugt wird.
AusnahmeBedingung
ArgumentOutOfRangeException

byteCount ist kleiner als 0 (null).

DecoderFallbackException

Es ist ein Fallback aufgetreten (eine ausführliche Erklärung finden Sie unter Zeichencodierung in .NET Framework).

- und -

DecoderFallback ist auf DecoderExceptionFallback festgelegt.

Die Anwendung muss GetCharCount verwenden, um die exakte Arraygröße zu berechnen, die von GetChars zum Speichern der resultierenden Zeichen benötigt wird. Zum Berechnen der maximalen Arraygröße muss GetMaxCharCount verwendet werden. Die GetCharCount-Methode ermöglicht es Ihnen, weniger Speicher zu belegen, wohingegen die GetMaxCharCount-Methode in der Regel schneller ausgeführt wird.

GetMaxCharCount ruft eine Zahl für den ungünstigsten Fall ab, auch für den ungünstigsten Fall für den zurzeit ausgewählten DecoderFallback. Wenn ein Fallback mit einer potenziell großen Zeichenfolge ausgewählt wird, ruft GetMaxCharCount große Werte ab.

In den meisten Fällen ruft diese Methode geeignete Zahlen für kleine Zeichenfolgen ab. Bei großen Zeichenfolgen müssen Sie möglicherweise entscheiden, ob sehr große Puffer verwendet werden sollen oder aber im seltenen Fall, dass ein angemessenerer Puffer zu klein ist, Fehler abgefangen werden sollen. Zudem sollten Sie einen weiteren Ansatz mit GetCharCount oder Decoder.Convert erwägen.

GetMaxCharCount hat keinen Bezug zu GetBytes. Wenn die Anwendung für die Verwendung mit GetBytes eine ähnliche Funktion benötigt, sollte GetMaxByteCount verwendet werden.

Bei Verwendung von GetMaxCharCount muss die Anwendung den Ausgabepuffer anhand der maximalen Größe des Eingabepuffers zuordnen. Wenn die Größe des Ausgabepuffers beschränkt ist, verwendet die Anwendung möglicherweise die Convert-Methode.

GetMaxCharCount berücksichtigt den ungünstigsten Fall für übrig gebliebene Bytes aus vorhergehenden Codierungsvorgängen. Bei den meisten Codepages werden beim Übergeben des Werts 0 an diese Methode Werte größer oder gleich 1 abgerufen.

HinweisHinweis

GetMaxCharCount(N) ist nicht unbedingt der gleiche Wert wie N* GetMaxCharCount(1).

Hinweise zur Implementierung

Bei sämtlichen Implementierungen von Encoding muss sichergestellt werden, dass keine Ausnahmen durch Pufferüberlauf ausgelöst werden, wenn die Puffergröße den Berechnungsergebnissen dieser Methode entspricht.

Im folgenden Beispiel wird eine Zeichenfolge in ein Bytearray codiert, und anschließend werden die Bytes in ein Zeichenarray decodiert.


using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Create two instances of UTF32Encoding: one with little-endian byte order and one with big-endian byte order.
      Encoding u32LE = Encoding.GetEncoding( "utf-32" );
      Encoding u32BE = Encoding.GetEncoding( "utf-32BE" );

      // Use a string containing the following characters:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      String myStr = "za\u0306\u01FD\u03B2";

      // Encode the string using the big-endian byte order.
      byte[] barrBE = new byte[u32BE.GetByteCount( myStr )];
      u32BE.GetBytes( myStr, 0, myStr.Length, barrBE, 0 );

      // Encode the string using the little-endian byte order.
      byte[] barrLE = new byte[u32LE.GetByteCount( myStr )];
      u32LE.GetBytes( myStr, 0, myStr.Length, barrLE, 0 );

      // Get the char counts, and decode the byte arrays.
      Console.Write( "BE array with BE encoding : " );
      PrintCountsAndChars( barrBE, u32BE );
      Console.Write( "LE array with LE encoding : " );
      PrintCountsAndChars( barrLE, u32LE );

   }


   public static void PrintCountsAndChars( byte[] bytes, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-25} :", enc.ToString() );

      // Display the exact character count.
      int iCC  = enc.GetCharCount( bytes );
      Console.Write( " {0,-3}", iCC );

      // Display the maximum character count.
      int iMCC = enc.GetMaxCharCount( bytes.Length );
      Console.Write( " {0,-3} :", iMCC );

      // Decode the bytes and display the characters.
      char[] chars = enc.GetChars( bytes );
      Console.WriteLine( chars );

   }

}


/* 
This code produces the following output.  The question marks take the place of characters that cannot be displayed at the console.

BE array with BE encoding : System.Text.UTF32Encoding : 5   12  :za??�
LE array with LE encoding : System.Text.UTF32Encoding : 5   12  :za??�

*/



.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
© 2013 Microsoft. Alle Rechte vorbehalten.