UnicodeEncoding.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 が 0 未満です。

-または-

結果のバイト数は、整数として返すことができる最大数を超えています。

フォールバックが発生しました (詳細については、「 .NET での文字エンコード」を参照してください)

および

EncoderFallbackEncoderExceptionFallback に設定されます。

次の例では、 GetMaxByteCount メソッドを使用して、指定した文字数をエンコードするために必要な最大バイト数を返す方法を示します。

using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        UnicodeEncoding Unicode = new UnicodeEncoding();
        int charCount = 2;
        int maxByteCount = Unicode.GetMaxByteCount(charCount);
        Console.WriteLine(
            "Maximum of {0} bytes needed to encode {1} characters.",
            maxByteCount,
            charCount
        );
    }
}
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim uni As New UnicodeEncoding()
        Dim charCount As Integer = 2
        Dim maxByteCount As Integer = uni.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を使用して別のアプローチを検討することもできます。

GetMaxByteCount には、 GetCharsとの関係はありません。 アプリケーションで GetCharsで使用する同様の関数が必要な場合は、 GetMaxCharCountを使用する必要があります。

Note

GetMaxByteCount(N) は必ずしも N* GetMaxByteCount(1)と同じ値であるとは限りません。

適用対象

こちらもご覧ください