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