UTF7Encoding.GetMaxByteCount(Int32) Metodo

Definizione

Calcola il numero massimo di byte prodotti dalla codifica del numero di caratteri specificato.

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

Parametri

charCount
Int32

Numero di caratteri da codificare.

Restituisce

Numero massimo di byte prodotti dalla codifica del numero di caratteri specificato.

Eccezioni

charCount è minore di zero.

-oppure-

Il numero di byte ottenuto è maggiore del numero massimo che può essere restituito come valore integer.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

EncoderFallback è impostato su EncoderExceptionFallback.

Esempio

Nell'esempio di codice seguente viene illustrato come usare il metodo per restituire il GetMaxByteCount numero massimo di byte necessari per codificare un numero specificato di caratteri.

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

Commenti

Per calcolare le dimensioni esatte della matrice richieste da GetBytes per archiviare i byte risultanti, l'applicazione usa GetByteCount. Per calcolare le dimensioni massime della matrice, l'applicazione deve usare GetMaxByteCount. Il GetByteCount metodo in genere consente l'allocazione di una quantità di memoria inferiore, mentre il GetMaxByteCount metodo viene in genere eseguito più velocemente.

GetMaxByteCount è un numero di case peggiore, incluso il peggiore caso per l'oggetto attualmente selezionato EncoderFallback. Se viene scelto un fallback con una stringa potenzialmente grande, GetMaxByteCount può restituire valori di grandi dimensioni.

Nella maggior parte dei casi, questo metodo restituisce numeri ragionevoli per stringhe di piccole dimensioni. Per stringhe di grandi dimensioni, potrebbe essere necessario scegliere tra l'uso di buffer molto grandi e l'intercettamento degli errori nel raro caso in cui venga superato un buffer più ragionevole. È anche possibile prendere in considerazione un approccio diverso usando GetByteCount o Encoder.Convert . Sebbene UTF-7 sia molto efficiente nella codifica dei dati ASCII, un byte per carattere, è estremamente inefficiente per altri dati. Come osservato sopra, GetMaxByteCount si occupa di un caso peggiore. Se i dati da codificare sono in gran parte ASCII e soprattutto se il cluster di caratteri ASCII insieme, UTF-7 è significativamente più efficiente del numero restituito da questo metodo.

GetMaxByteCountnon ha alcuna relazione con GetChars . Se l'applicazione necessita di una funzione simile da usare con GetChars, deve usare GetMaxCharCount.

Nota

GetMaxByteCount(N)non è necessariamente lo stesso valore di N* GetMaxByteCount(1) .

Si applica a

Vedi anche