UTF8Encoding.GetMaxByteCount(Int32) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した文字数をエンコードすることによって生成される最大バイト数を計算します。
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
エンコードする文字数。
返品
指定した文字数をエンコードすることによって生成される最大バイト数。
例外
フォールバックが発生しました (詳細については、「 .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 バイトが 1 つだけ必要になることがよくありますが、 GetMaxByteCount によって返される数値は、変換される文字列が 4 バイトを必要とする文字で構成される可能性を許容する必要があります。
GetMaxByteCount には、 GetCharsとの関係はありません。 アプリケーションで GetCharsで使用する同様の関数が必要な場合は、 GetMaxCharCountを使用する必要があります。
Note
GetMaxByteCount(N) は必ずしも N* GetMaxByteCount(1)と同じ値であるとは限りません。