上周,一名年轻学生问我编组是否与投射相同。 我的回答绝对没有。编组是seralization,改变的方式 objet的内存表示形式为字节,以便传输到a 网络,而铸造与类型转换/强制有关。
后来,重新思考这个问题我认为编组可以看作是一个特殊的铸造案例。例如,内存表示的转换是在xml中,然后可以说你正在“转换”到由该xml文件的相应xsd语法定义的类型。
您如何看待这个?
答案 0 :(得分:3)
Casting不会修改数据类型。这是一个重要的区别。当你编组某些东西时,你正在将数据转换成其他东西。
简单的强制转换只会改变你解释对象的方式,而不是内部对象的内容。
我同意区别应该是明确的,否则不熟悉的人可能会感到困惑。
答案 1 :(得分:0)
编组通常是关于技术边界(例如,通过网络或从一种内存类型到另一种内存类型,如托管/非托管的情况),而投射通常在同一技术边界内,因此我认为它们肯定是不同的东西。
如果我们对两种方法都使用相同的术语,那将会异常混乱,这意味着我们需要以不同的方式对它们进行不同的定义。
答案 2 :(得分:-1)
它们都是“类型转换”,但它们是不同类型的转换:转换通常在相关的对象类型之间(例如从超类到子类的向下转换),而编组可能是例如来自对象图到纯文本表示。