为什么Stream.ReadByte返回int?

iva*_*ax9 4 .net c# stream

我花了一些时间研究System.IO命名空间,之后我找到了一些有趣的地方.Streamclass包含名称为ReadByte的方法和类似的定义:

public virtual int ReadByte()
Run Code Online (Sandbox Code Playgroud)

所以实际上我的问题是为什么方法调用ReadByte并返回int?这样命名的目的是什么?

Ale*_*exD 7

ReadByte 回报

无符号字节转换为a Int32,如果在流的末尾则为-1.

这种方法(具有不与任何可能byte值碰撞的特殊值)导致使用"延伸"的整体类型byte.

原则上,类似的类型也short可以使用,但使用起来更加自然和常规int.