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。此外,它通过内部字符串索引器(
[]
)方法。