UTF7Encoding.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 kodowania.

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ę int.

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

-I-

EncoderFallback jest ustawiona na EncoderExceptionFallbackwartość .

Przykłady

W poniższym przykładzie kodu pokazano, jak za pomocą GetMaxByteCount metody zwracać maksymalną liczbę bajtów wymaganych do zakodowania określonej liczby znaków.

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

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

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim utf7 As New UTF7Encoding()
        Dim charCount As Integer = 2
        Dim maxByteCount As Integer = utf7.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 do przechowywania wynikowych bajtów, aplikacja używa polecenia GetByteCount. Aby obliczyć maksymalny rozmiar tablicy, aplikacja powinna użyć polecenia GetMaxByteCount. Metoda GetByteCount zwykle zezwala na alokację mniejszej ilości pamięci, podczas gdy GetMaxByteCount metoda zwykle wykonuje się szybciej.

GetMaxByteCount jest najgorszym numerem, w tym najgorszym przypadkiem dla aktualnie wybranego EncoderFallbackelementu . Jeśli opcja rezerwowa zostanie wybrana 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życiem bardzo dużych buforów a błędami przechwytywania w rzadkich przypadkach przekroczenia bardziej rozsądnego buforu. Warto również rozważyć inne podejście przy użyciu metody GetByteCount lub Encoder.Convert. Chociaż utF-7 jest bardzo wydajny w kodowaniu danych ASCII, jeden bajt na znak, jest bardzo nieefektywny dla innych danych. Jak zauważył powyżej, GetMaxByteCount zajmuje się najgorszym przypadkiem. Jeśli dane, które mają być zakodowane, są w dużej mierze ASCII, a zwłaszcza jeśli klaster znaków ASCII razem, UTF-7 jest znacznie bardziej wydajny niż liczba zwracana przez tę metodę.

GetMaxByteCount nie ma relacji z GetChars. Jeśli aplikacja potrzebuje podobnej funkcji do użycia z GetCharsprogramem , powinna użyć polecenia GetMaxCharCount.

Uwaga

GetMaxByteCount(N) niekoniecznie jest taką samą wartością jak N* GetMaxByteCount(1).

Dotyczy

Zobacz też