UTF7Encoding.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 未満です。

- または -

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

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

および

EncoderFallbackEncoderExceptionFallback に設定されます。

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

using namespace System;
using namespace System::Text;
int main()
{
   UTF7Encoding^ utf7 = gcnew UTF7Encoding;
   int charCount = 2;
   int maxByteCount = utf7->GetMaxByteCount( charCount );
   Console::WriteLine( "Maximum of {0} bytes needed to encode {1} characters.", maxByteCount, charCount );
}
using System;
using System.Text;

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

Class UTF7EncodingExample
    
    Public Shared Sub Main()
        Dim utf7 As New UTF7Encoding()
        Dim charCount As Integer = 2
        Dim maxByteCount As Integer = utf7.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 は大きな値を返すことができます。

ほとんどの場合、このメソッドは小さな文字列に対して妥当な数値を返します。 大きな文字列の場合は、非常に大きなバッファーを使用して、より合理的なバッファーを超えるまれなケースでエラーをキャッチするかを選択する必要がある場合があります。 またはを使用して別の方法を検討することもでき GetByteCountEncoder.Convert ます。 UTF-7 は ASCII データ (1 文字につき 1 バイト) のエンコードに非常に効率的ですが、他のデータでは非常に非効率的です。 前述のように、 GetMaxByteCount 最悪のケースを扱います。 エンコードするデータが大部分が ASCII の場合、特に ASCII 文字が一緒にクラスター化されている場合、UTF-7 は、このメソッドによって返される数値よりも大幅に効率的です。

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

注意

GetMaxByteCount(N)はと同じ値であるとは限りません N* GetMaxByteCount(1)

適用対象

こちらもご覧ください