UTF8Encoding.GetMaxByteCount(Int32) メソッド


指定した文字数をエンコードすることによって生成される最大バイト数を計算します。Calculates the maximum number of bytes produced by encoding the specified number of characters.

 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



エンコードする文字数。The number of characters to encode.


指定した文字数をエンコードすることによって生成される最大バイト数。The maximum number of bytes produced by encoding the specified number of characters.


charCount が 0 未満です。charCount is less than zero.

- または --or- 結果のバイト数が、整数として返すことのできる最大数を超えています。The resulting number of bytes is greater than the maximum number that can be returned as an integer.

フォールバックが発生しました (詳細な説明は、「.NET Framework における文字エンコーディング」をご覧ください)A fallback occurred (see Character Encoding in the .NET Framework for complete explanation) および-and- EncoderFallbackEncoderExceptionFallback に設定されます。EncoderFallback is set to EncoderExceptionFallback.

次の例ではGetMaxByteCount 、メソッドを使用して、指定された文字数をエンコードするために必要な最大バイト数を返します。The following example uses the GetMaxByteCount method to return the maximum number of bytes required to encode a specified number of characters.

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);
            "Maximum of {0} bytes needed to encode {1} characters.",
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メソッドを呼び出します。To calculate the exact array size required by GetBytes to store the resulting bytes, you call the GetByteCount method. 配列の最大サイズを計算するには、 GetMaxByteCountメソッドを呼び出します。To calculate the maximum array size, you call the GetMaxByteCount method. メソッドは通常、より少ないメモリを割り当てGetMaxByteCountますが、メソッドは通常、より高速に実行されます。 GetByteCountThe GetByteCount method generally allocates less memory, while the GetMaxByteCount method generally executes faster.

GetMaxByteCountは、現在選択さEncoderFallbackれているの最悪のケースを含む、最悪の数値です。GetMaxByteCount is a worst-case number, including the worst case for the currently selected EncoderFallback. 大きな文字列を使用してフォールバックを選択したGetMaxByteCount場合、は大きな値を返すことがあります。If a fallback is chosen with a potentially large string, GetMaxByteCount can return large values.

ほとんどの場合、このメソッドは小さい文字列に対して適切な数値を返します。In most cases, this method returns reasonable numbers for small strings. 大きな文字列の場合は、非常に大きなバッファーを使用するか、より適切なバッファーを超えた場合に、まれにエラーをキャッチするかを選択する必要があります。For large strings, you might have to choose between using very large buffers and catching errors in the rare case that a more reasonable buffer is exceeded. またはGetByteCount Encoder.Convertを使用して別の方法を検討することもできます。You might also want to consider a different approach using GetByteCount or Encoder.Convert. たとえば、英語のテキストとその他の多くの言語では、文字を表すために1つの utf-8 バイトしか必要とGetMaxByteCountしませんが、によって返される数値は、変換される文字列がそれぞれの文字で構成される可能性があります。4バイトが必要です。For example, text in English and many other languages often needs only one UTF-8 byte to represent a character, but the number returned by GetMaxByteCount has to allow for the possibility that the string to be converted will consist entirely of characters that each require four bytes.

GetMaxByteCountGetCharsは関係がありません。GetMaxByteCount has no relation to GetChars. アプリケーションがと共GetCharsにを使用するために同様の機能を必要とする場合は、を使用GetMaxCharCountする必要があります。If your application needs a similar function to use with GetChars, it should use GetMaxCharCount.


GetMaxByteCount(N)はと同じ値であるとN* GetMaxByteCount(1)は限りません。GetMaxByteCount(N) is not necessarily the same value as N* GetMaxByteCount(1).