UTF8Encoding.GetMaxCharCount(Int32) UTF8Encoding.GetMaxCharCount(Int32) UTF8Encoding.GetMaxCharCount(Int32) UTF8Encoding.GetMaxCharCount(Int32) Method


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

 override int GetMaxCharCount(int byteCount);
public override int GetMaxCharCount (int byteCount);
override this.GetMaxCharCount : int -> int
Public Overrides Function GetMaxCharCount (byteCount As Integer) As Integer


Int32 Int32 Int32 Int32

デコードするバイト数。The number of bytes to decode.


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


byteCount が 0 未満です。byteCount 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- DecoderFallbackDecoderExceptionFallback に設定されます。DecoderFallback is set to DecoderExceptionFallback.

次の例ではGetMaxCharCount 、メソッドを使用して、指定されたバイト数をデコードすることによって生成される最大文字数を返します。The following example uses the GetMaxCharCount method to return the maximum number of characters produced by decoding a specified number of bytes.

using namespace System;
using namespace System::Text;
int main()
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   int byteCount = 8;
   int maxCharCount = utf8->GetMaxCharCount( byteCount );
   Console::WriteLine( "Maximum of {0} characters needed to decode {1} bytes.", maxCharCount, byteCount );

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        UTF8Encoding utf8 = new UTF8Encoding();
        int byteCount = 8;
        int maxCharCount = utf8.GetMaxCharCount(byteCount);
            "Maximum of {0} characters needed to decode {1} bytes.",
Imports System.Text

Class UTF8EncodingExample
    Public Shared Sub Main()
        Dim utf8 As New UTF8Encoding()
        Dim byteCount As Integer = 8
        Dim maxCharCount As Integer = utf8.GetMaxCharCount(byteCount)
        Console.WriteLine( _
            "Maximum of {0} characters needed to decode {1} bytes.", _
            maxCharCount, _
            byteCount _
    End Sub
End Class


が結果の文字を格納GetCharsするために必要な配列の正確なサイズを計算するには、 GetCharCountメソッドを呼び出します。To calculate the exact array size required by GetChars to store the resulting characters, you call the GetCharCount method. 配列の最大サイズを計算するには、 GetMaxCharCountメソッドを呼び出します。To calculate the maximum array size, you call the GetMaxCharCount method. メソッドは通常、より少ないメモリを割り当てGetMaxCharCountますが、メソッドは通常、より高速に実行されます。 GetCharCountThe GetCharCount method generally allocates less memory, while the GetMaxCharCount method generally executes faster.

GetMaxCharCountは、現在選択さDecoderFallbackれているの最悪のケースを含む、最悪の数値です。GetMaxCharCount is a worst-case number, including the worst case for the currently selected DecoderFallback. 大きな文字列を使用してフォールバックを選択したGetMaxCharCount場合、は大きな値を返すことがあります。If a fallback is chosen with a potentially large string, GetMaxCharCount 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. またはGetCharCount Encoder.Convertを使用して別の方法を検討することもできます。You might also want to consider a different approach using GetCharCount or Encoder.Convert.

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


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