UTF7Encoding.GetMaxByteCount(Int32) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Calcula o número máximo de bytes produzidos codificando o número especificado de caracteres.
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
Parâmetros
- charCount
- Int32
O número de caracteres a codificar.
Devoluções
O número máximo de bytes produzidos ao codificar o número especificado de caracteres.
Exceções
charCount é inferior a zero.
-ou-
O número resultante de bytes é maior do que o número máximo que pode ser devolvido como int.
Ocorreu um recurso de recurso (para mais informações, veja Codificação de Caracteres em .NET)
- e -
EncoderFallback está definido como EncoderExceptionFallback.
Exemplos
O exemplo de código seguinte demonstra como usar o GetMaxByteCount método para devolver o número máximo de bytes necessários para codificar um determinado número de caracteres.
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
Observações
Para calcular o tamanho exato do array necessário GetBytes para armazenar os bytes resultantes, a aplicação utiliza GetByteCount. Para calcular o tamanho máximo do array, a aplicação deve usar GetMaxByteCount. O GetByteCount método geralmente permite a alocação de menos memória, enquanto o GetMaxByteCount método geralmente é executado mais rapidamente.
GetMaxByteCount é um número do pior caso, incluindo o pior caso para o atualmente selecionado EncoderFallback. Se for escolhido um plano B com uma cadeia potencialmente grande, GetMaxByteCount pode devolver valores elevados.
Na maioria dos casos, este método devolve números razoáveis para cadeias pequenas. Para cadeias grandes, pode ter de escolher entre usar buffers muito grandes e apanhar erros no raro caso de ultrapassar um buffer mais razoável. Também pode querer considerar uma abordagem diferente usando GetByteCount ou Encoder.Convert. Embora o UTF-7 seja muito eficiente a codificar dados ASCII, um byte por carácter, é extremamente ineficiente para outros dados. Como referido acima, GetMaxByteCount trata do pior cenário. Se os dados a codificar forem em grande parte ASCII, e especialmente se os caracteres ASCII se agruparem, o UTF-7 é significativamente mais eficiente do que o número devolvido por este método sugere.
GetMaxByteCount não tem relação com GetChars. Se a sua aplicação precisar de uma função semelhante para usar , GetCharsdeverá usar GetMaxCharCount.
Note
GetMaxByteCount(N) não é necessariamente o mesmo valor que N* GetMaxByteCount(1).