C# 为什么TextReader.Read返回的是int而不是char?
考虑以下代码(C# 为什么TextReader.Read返回的是int而不是char?,c#,unicode,character-encoding,textreader,C#,Unicode,Character Encoding,Textreader,考虑以下代码(.Dump()在LinqPad中,只需写入控制台): var s=“TextReader.Read()的读取量永远不会超过2个字节;但是,它返回-1表示“不再读取字符”(字符串结尾)。因此,它的返回类型需要从Char(2个字节)上升到Int32(4个字节)为了能够表达完整的Char范围加上-1可能使用int在到达文本末尾时允许返回-1: 文本读取器中的下一个字符,如果没有更多可用字符,则返回-1。默认实现返回-1 而且,Length是2,因为Strings是UTF-16序列,需要表
.Dump()
在LinqPad中,只需写入控制台):
var s=“TextReader.Read()
的读取量永远不会超过2个字节;但是,它返回-1
表示“不再读取字符”(字符串结尾)。因此,它的返回类型需要从Char
(2个字节)上升到Int32
(4个字节)为了能够表达完整的Char
范围加上-1
可能使用int
在到达文本末尾时允许返回-1
:
文本读取器中的下一个字符,如果没有更多可用字符,则返回-1。默认实现返回-1
而且,Length
是2
,因为String
s是UTF-16序列,需要表示U+FFFF
上方的码点
{0xD852,0xDF62}U+24B62(首先,Read()
是虚拟的,并且StringReader
会覆盖它。为什么它会返回int
?不确定..但至少对Read()
的最后一次调用将允许它确定EOF。此外,它通过内部字符串索引器([]
)方法。