使用英语阅读

通过


DecoderFallbackBuffer 类

定义

提供一个缓冲区,该缓冲区允许回退处理程序在解码器无法对输入字节序列进行解码时将替换字符串返回到该解码器。

C#
public abstract class DecoderFallbackBuffer
继承
DecoderFallbackBuffer
派生

注解

编码定义 Unicode 字符和编码的字节序列之间的映射。 如果未为特定字节序列定义映射,则将输入字节序列转换为输出字符的解码操作将失败。

如果无法执行转换,.NET Framework会提供一种故障处理机制,称为回退。 所有解码器回退处理程序都必须实现以下各项:

  • 解码器回退,由派生自 类的 DecoderFallback 类表示。

  • 解码器回退缓冲区,由派生自 DecoderFallbackBuffer 类的类型表示,该类可将字符串返回到转换操作。

回退可以使用三种策略来处理转换失败:

实现中的 DecoderFallbackBuffer 缓冲区表示要返回给解码器以响应解码器回退的整个字符串。 通常,实现还包括状态信息,例如要返回到解码器的下一个字符的索引以及要返回的剩余字符数。 由于 DecoderFallbackBuffer 是抽象类,因此它要求派生类至少实现以下成员:

  • 方法 Fallback ,解码器在无法解码字节序列时调用该方法。 解码器将两条信息传递给回退缓冲区实现:包含无法解码的字节的数组和输入字节数组中第一个字节的索引。 在解码器回退异常处理程序中,将在此方法中引发异常。 否则,如果方法提供回退,则返回 true ,否则 false 返回 。

  • 方法 GetNextChar ,如果 Fallback 方法返回 true,则解码器会重复调用该方法。 在连续调用中,处理程序应返回其缓冲区中的每个字符。 返回所有字符后,应返回 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)

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另请参阅