考虑以下代码(.Dump()
在 LinqPad 中只是写入控制台):
var s = ""; //3 byte code point. 4 byte UTF32 encoded
s.Dump();
s.Length.Dump(); // 2
TextReader sr = new StringReader("");
int i;
while((i = sr.Read()) >= 0)
{
// notice here we are yielded two
// 2 byte values, but as ints
i.ToString("X").Dump(); // D852, DF62
}
鉴于上述结果,为什么TextReader.Read()
返回 anint
而不是 a char
。在什么情况下它可能读取大于 2 个字节的值?