UTF8Encoding.GetMaxByteCount(Int32) Метод
Определение
Важный
Некоторая информация относится к предварительным версиям продукта, который может быть существенно изменен до его выпуска. Корпорация Майкрософт не дает никаких гарантий, явных или подразумеваемых, в отношении предоставленной здесь информации.
Вычисляет максимальное количество байтов, полученных при кодировании заданного числа символов.
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
Параметры
- charCount
- Int32
Число кодируемых символов.
Возвращает
Максимальное количество байтов, полученных при кодировании заданного количества символов.
Исключения
Значение параметра charCount меньше нуля.
-или-
Результирующее число байтов больше максимального количества, которое можно вернуть как целочисленное значение.
Произошел откат (см. сведения о кодировке символов в .NET)
- и -
Параметру EncoderFallback задается значение EncoderExceptionFallback.
Примеры
В следующем примере метод используется GetMaxByteCount для возврата максимального количества байтов, необходимых для кодирования указанного числа символов.
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
Замечания
Чтобы вычислить точный размер массива, необходимый GetBytes для хранения результирующего байта, вызовите GetByteCount метод . Чтобы вычислить максимальный размер массива, вызовите GetMaxByteCount метод . Метод GetByteCount обычно выделяет меньше памяти, в то время как GetMaxByteCount метод обычно выполняется быстрее.
GetMaxByteCount — это наихудшее число, включая наихудший вариант для выбранного EncoderFallbackв данный момент . Если выбран резервный вариант с потенциально большой строкой, GetMaxByteCount может возвращать большие значения.
В большинстве случаев этот метод возвращает разумные числа для небольших строк. Для больших строк может потребоваться выбрать между использованием очень больших буферов и перехватом ошибок в редких случаях, когда превышение более разумного буфера. Также можно рассмотреть другой подход с помощью GetByteCount или Encoder.Convert . Например, тексту на английском и многих других языках часто требуется только один байт UTF-8 для представления символа, но число, возвращаемое параметром GetMaxByteCount , должно допускать возможность того, что преобразуемая строка будет полностью состоять из символов, для каждого из которых требуется четыре байта.
GetMaxByteCountне имеет отношения к GetChars . Если приложению требуется аналогичная функция для использования с GetChars, оно должно использовать GetMaxCharCount.
Примечание
GetMaxByteCount(N)не обязательно то же значение, что и N* GetMaxByteCount(1) .