UTF8Encoding.GetMaxByteCount(Int32) Metoda

Definicja

Oblicza maksymalną liczbę bajtów generowanych przez kodowanie określonej liczby znaków.

public:
 override int GetMaxByteCount(int charCount);
public override int GetMaxByteCount (int charCount);
override this.GetMaxByteCount : int -> int
Public Overrides Function GetMaxByteCount (charCount As Integer) As Integer

Parametry

charCount
Int32

Liczba znaków do zakodowania.

Zwraca

Maksymalna liczba bajtów generowanych przez kodowanie określonej liczby znaków.

Wyjątki

Parametr charCount ma wartość niższą niż zero.

-lub-

Wynikowa liczba bajtów jest większa niż maksymalna liczba, którą można zwrócić jako liczbę całkowitą.

Wystąpił powrót (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-I-

EncoderFallback parametr jest ustawiony na EncoderExceptionFallbackwartość .

Przykłady

W poniższym przykładzie użyto GetMaxByteCount metody , aby zwrócić maksymalną liczbę bajtów wymaganych do zakodowania określonej liczby znaków.

using namespace System;
using namespace System::Text;
int main()
{
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   int charCount = 2;
   int maxByteCount = utf8->GetMaxByteCount( charCount );
   Console::WriteLine( "Maximum of {0} bytes needed to encode {1} characters.", maxByteCount, charCount );
}
using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        int charCount = 2;
        int maxByteCount = utf8.GetMaxByteCount(charCount);
        Console.WriteLine(
            "Maximum of {0} bytes needed to encode {1} characters.",
            maxByteCount,
            charCount
        );
    }
}
Imports System.Text

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim charCount As Integer = 2
        Dim maxByteCount As Integer = utf8.GetMaxByteCount(charCount)
        Console.WriteLine( _
            "Maximum of {0} bytes needed to encode {1} characters.", _
            maxByteCount, _
            charCount _
        )
    End Sub
End Class

Uwagi

Aby obliczyć dokładny rozmiar tablicy wymagany przez GetBytes program do przechowywania bajtów wynikowych, należy wywołać metodę GetByteCount . Aby obliczyć maksymalny rozmiar tablicy, należy wywołać metodę GetMaxByteCount . Metoda GetByteCount zwykle przydziela mniej pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

GetMaxByteCount jest numerem najgorszej wielkości liter, w tym najgorszym przypadkiem dla aktualnie wybranego EncoderFallbackelementu . Jeśli zostanie wybrany rezerwowy z potencjalnie dużym ciągiem, GetMaxByteCount może zwrócić duże wartości.

W większości przypadków ta metoda zwraca rozsądne liczby dla małych ciągów. W przypadku dużych ciągów może być konieczne wybranie między używaniem bardzo dużych buforów a przechwytywaniem błędów w rzadkich przypadkach przekroczenia bardziej rozsądnego buforu. Warto również rozważyć inne podejście przy użyciu metody GetByteCount lub Encoder.Convert. Na przykład tekst w języku angielskim i wielu innych językach często wymaga tylko jednego bajtu UTF-8, aby reprezentować znak, ale liczba zwracana przez GetMaxByteCount musi pozwolić na możliwość konwersji ciągu będzie składać się w całości z znaków, które każdy z nich wymaga czterech bajtów.

GetMaxByteCountnie ma relacji z .GetChars Jeśli aplikacja potrzebuje podobnej funkcji do użycia z usługą GetChars, powinna używać polecenia GetMaxCharCount.

Uwaga

GetMaxByteCount(N) nie musi być tą samą wartością co N* GetMaxByteCount(1).

Dotyczy

Zobacz też