胡子哥哥
你的理解"序列化"的含义."序列化 (serialization)将对象的状态信息转换为可以存储或传输的格式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。"上面的解释,涉及到两个重要概念:存储,传输.存储,传输的格式是什么?那就是字节流,或者说字节数组.字符串,只是一种抽象,是对一段字节数组的逻辑含义的概括,比如,我给你四字节的字节数组,你认为这四个字节的数组是代表"字符串",还是代表"32整形值"呢?你当然不知道,这就需要提供这个四字节数组的人告诉你,他的这个四字节数组具体代表什么.同样,Stream 也只是一中抽象,Stream对象是一组对字节数组的操作,Stream对象内部使用字节数组存储数据,对于不同的派生类FileStream,NetworkStream,都提供了自身优化的方式来衔接内存中的字节数组与磁盘上或网络IO设备上的字节数组.json序列化后的实际对象应该是字节数组,而非字符串,只是为了便于人阅读,才提供一定的方法可以将该字节数组转换为可供人读的字符串.所以,对于你的第一个问题,不是为了通用性,而是对序列化过程的职责分离.至于拿到序列化字节数组后,你想用来干什么,就留给使用者去决定,这时候,你可以使用BinaryReader StreamReader TextReader等配合Encoding来将字节数组转换成你想要的string,int32,double等.Stream的作用,我在前面已经说过了,至于没有这个东西的坏处就是:很多人会写自己的 Stream.