为什么我的DecoderFallbackBuffer专业化中的GetNextChar()反复被调用?

时间:2010-04-26 15:59:02

标签: .net character-encoding

我需要生成自己的DecoderFallback和DecoderFallbackBuffer类来实现一些自定义流解码。

我发现使用它的流阅读器重复调用GetNextChar(),即使我的specilizaed DecoderFallbackBuffer.Remaining属性返回0表示没有更多字符要返回。

最终结果是流阅读器进入无限循环。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

当剩余属性为0时,解决方法是使一个人的GetNextChar()返回(char)0。这在MSDN文档中肯定不清楚。

我怀疑,在内部,读者正在做类似

的事情
while (theChar = dfb.GetNextChar() <> 0){}

而不是

while (dfb.Remaining > 0){ theChar = dfb.GetNextChar(); }

无论如何,似乎工作正常。只是想将这个.NET类用于SO。