DecoderFallbackBuffer 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供緩衝區,允許後援處理常式在無法解碼輸入位元組序列時,將替代字串傳回至解碼器。
public ref class DecoderFallbackBuffer abstract
public abstract class DecoderFallbackBuffer
type DecoderFallbackBuffer = class
Public MustInherit Class DecoderFallbackBuffer
- 繼承
-
DecoderFallbackBuffer
- 衍生
備註
編碼會定義 Unicode 字元與編碼位元組序列之間的對應。 將輸入位元組序列轉換成輸出字元的解碼作業,如果未針對特定位元組序列定義對應,則失敗。
如果無法執行轉換,.NET Framework會提供稱為後援的失敗處理機制。 所有解碼器後援處理常式都必須實作下列專案:
解碼器後援,由衍生自 類別的 DecoderFallback 類別表示。
解碼器後援緩衝區,此緩衝區是由衍生自 類別的類型 DecoderFallbackBuffer 所表示,可傳回字串至轉換作業。
後援可以使用三種策略來處理轉換失敗:
最適合的對應。 解碼器後援緩衝區可以傳回字串,代表輸入位元組序列的接近近似值。 .NET Framework不提供最符合 DecoderFallbackBuffer 公用的實作。
取代。 解碼器後援緩衝區可以傳回字串,例如問號 (「?」) ,表示無法解碼位元組序列。 在.NET Framework中 DecoderReplacementFallback ,和 DecoderReplacementFallbackBuffer 類別提供公用取代後援緩衝區實作。 類別的 DecoderReplacementFallback 建構函式可讓您定義取代字串。
例外狀況。 實 DecoderFallbackBuffer 作會擲回例外狀況,表示位元組序列無法解碼,並終止解碼作業。 在此情況下,後援處理常式必須提供 DecoderFallbackBuffer 實作,雖然它不會將字串傳回給解碼器。 在.NET Framework中 DecoderExceptionFallback ,和 DecoderExceptionFallbackBuffer 類別會提供公用例外狀況後援實作,以在位元組序列無法解碼時擲 DecoderFallbackException 回 。
實作中的 DecoderFallbackBuffer 緩衝區代表要傳回給解碼器的整個字串,以回應解碼器後援。 一般而言,實作也包含狀態資訊,例如要傳回解碼器的下一個字元的索引,以及要傳回的剩餘字元數目。 由於 DecoderFallbackBuffer 是抽象類別,因此至少需要衍生類別來實作下列成員:
Fallback方法,當解碼器無法解碼位元組序列時,會呼叫此方法。 解碼器會將兩個資訊片段傳遞至後援緩衝區實作:陣列,其中包含無法解碼的位元組,以及輸入位元組陣列中第一個位元組的索引。 在解碼器後援例外狀況處理常式中,這個方法會擲回例外狀況。 否則,如果方法提供後援,則傳回 ,否則
false
會傳回true
。如果 GetNextChar 方法傳回
true
,這個方法會由解碼器 Fallback 重複呼叫。 在後續呼叫中,處理常式應該會傳回其緩衝區中的每個字元。 當它傳回所有字元時,它應該會傳回 U+0000。 例外狀況後援處理常式一律會傳回 U+0000。MovePrevious方法,它會嘗試將指標移至緩衝區中的上一個位置,並指出移動是否成功。 例外狀況處理常式一律會傳
false
回 。Remaining屬性,表示要傳回給解碼器的剩餘字元數。 例外狀況後援處理常式一律會傳回零。
建構函式
DecoderFallbackBuffer() |
初始化 DecoderFallbackBuffer 類別的新執行個體。 |
屬性
Remaining |
在衍生類別中覆寫時,於目前的 DecoderFallbackBuffer 物件中取得仍要處理的字元數。 |
方法
Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
Fallback(Byte[], Int32) |
在衍生類別中覆寫時,預備後援緩衝區來處理指定的輸入位元組序列。 |
GetHashCode() |
做為預設雜湊函式。 (繼承來源 Object) |
GetNextChar() |
在衍生類別中覆寫時,擷取後援緩衝區中的下一個字元。 |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
MovePrevious() |
在衍生類別中覆寫時,會使 GetNextChar() 方法的下一個呼叫存取在目前字元位置之前的資料緩衝區字元位置。 |
Reset() |
初始化與後援緩衝區有關的所有資料和狀態資訊。 |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |