次の方法で共有


DecoderFallbackBuffer クラス

定義

入力バイト シーケンスをデコードできない場合に、フォールバック ハンドラーがデコーダーに代替文字列を返すことを可能にするためのバッファーを提供します。

public ref class DecoderFallbackBuffer abstract
public abstract class DecoderFallbackBuffer
type DecoderFallbackBuffer = class
Public MustInherit Class DecoderFallbackBuffer
継承
DecoderFallbackBuffer
派生

注釈

エンコードは、Unicode 文字とエンコードされたバイト シーケンスの間のマッピングを定義します。 入力バイト シーケンスを出力文字に変換するデコード操作は、特定のバイト シーケンスに対してマッピングが定義されていない場合に失敗します。

.NET Frameworkは、変換を実行できない場合にフォールバックと呼ばれるエラー処理メカニズムを提供します。 すべてのデコーダー フォールバック ハンドラーは、次を実装する必要があります。

  • クラスから DecoderFallback 派生したクラスによって表されるデコーダー フォールバック。

  • デコーダー フォールバック バッファー。変換操作に文字列を返すことができるクラスから DecoderFallbackBuffer 派生した型によって表されます。

フォールバックでは、次の 3 つの戦略を使用して変換エラーを処理できます。

  • 最適なマッピング。 デコーダー フォールバック バッファーは、入力バイト シーケンスに近い近似値を表す文字列を返すことができます。 .NET Frameworkでは、パブリックに最適DecoderFallbackBufferな実装は提供されません。

  • 置換します。 デコーダー フォールバック バッファーは、バイト シーケンスをデコードできなかったことを示す疑問符 ("?") などの文字列を返すことができます。 .NET Frameworkでは、DecoderReplacementFallbackクラスはDecoderReplacementFallbackBufferパブリック置換フォールバック バッファー実装を提供します。 クラスのコンストラクターを DecoderReplacementFallback 使用すると、置換文字列を定義できます。

  • 例外。 実装は DecoderFallbackBuffer 例外をスローします。これは、バイト シーケンスをデコードできないことを示し、デコード操作を終了します。 この場合、フォールバック ハンドラーは、デコーダーに文字列を DecoderFallbackBuffer 返しませんが、実装を提供する必要があります。 .NET Frameworkでは、DecoderExceptionFallbackクラスとDecoderExceptionFallbackBufferクラスは、バイト シーケンスをデコードできないときに a DecoderFallbackException をスローするパブリック例外フォールバック実装を提供します。

実装内のバッファーは、 DecoderFallbackBuffer デコーダーフォールバックに応答してデコーダーに返される文字列全体を表します。 一般に、実装には、デコーダーに返される次の文字のインデックスや、返される残りの文字の数などの状態情報も含まれます。 抽象クラスであるため DecoderFallbackBuffer 、少なくとも次のメンバーを実装するには派生クラスが必要です。

  • Fallbackバイト シーケンスをデコードできない場合にデコーダーによって呼び出されるメソッド。 デコーダーは、デコードできなかったバイトと入力バイト配列の最初のバイトのインデックスを含む配列という 2 つの情報をフォールバック バッファー実装に渡します。 デコーダー フォールバック例外ハンドラーでは、このメソッドで例外がスローされます。 それ以外の場合、フォールバックを提供する場合、またはfalse提供しない場合は、メソッドが返されますtrue

  • メソッドはGetNextChar、メソッドが返trueされた場合Fallbackにデコーダーによって繰り返し呼び出されます。 連続する呼び出しでは、ハンドラーはバッファー内の各文字を返す必要があります。 すべての文字が返されると、U+0000 が返されます。 例外フォールバック ハンドラーは常に U+0000 を返します。

  • バッファー内の MovePrevious 前の位置へのポインターの移動を試み、移動が成功したかどうかを示すメソッド。 例外ハンドラーは常に返します false

  • デコーダ Remaining ーに返される残りの文字数を示すプロパティ。 例外フォールバック ハンドラーは常に 0 を返します。

コンストラクター

DecoderFallbackBuffer()

DecoderFallbackBuffer クラスの新しいインスタンスを初期化します。

プロパティ

Remaining

派生クラスでオーバーライドされた場合、現在の DecoderFallbackBuffer オブジェクト内に処理されずに残っている文字数を取得します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
Fallback(Byte[], Int32)

派生クラスでオーバーライドされた場合、指定した入力バイト シーケンスを処理するためのフォールバック バッファーを確保します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetNextChar()

派生クラスでオーバーライドされた場合、フォールバック バッファーの次の文字を取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MovePrevious()

派生クラスでオーバーライドされた場合、GetNextChar() メソッドに対する次の呼び出しで、データ バッファーにおける現在の文字位置の前の文字位置に移動します。

Reset()

このフォールバック バッファーに関連するすべてのデータおよびステータス情報を初期化します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください