上周一个年轻的学生问我编组和选角是否一样。我的回答肯定是不。编组是序列化,将对象的内存表示转换为字节以便传输到网络的方法,而强制转换与类型转换/强制有关。
后来,重新思考这个问题,我认为编组可以看作是铸造的一种特殊情况。例如,内存表示的转换是在 xml 中,那么可以说您正在“转换”为该 xml 文件的相应 xsd 语法定义的类型。
你怎么看待这件事?
上周一个年轻的学生问我编组和选角是否一样。我的回答肯定是不。编组是序列化,将对象的内存表示转换为字节以便传输到网络的方法,而强制转换与类型转换/强制有关。
后来,重新思考这个问题,我认为编组可以看作是铸造的一种特殊情况。例如,内存表示的转换是在 xml 中,那么可以说您正在“转换”为该 xml 文件的相应 xsd 语法定义的类型。
你怎么看待这件事?
强制转换不会修改数据类型。这是一个主要区别。当您编组某些内容时,您正在将数据转换为其他内容。
一个简单的转换只会改变你解释对象的方式,而不是对象内部的内容。
我同意区分应该清楚,否则不熟悉的人可能会感到困惑。
编组通常与技术边界有关(例如,在托管/非托管的情况下,跨越网络或从一种内存类型到另一种内存类型),而强制转换通常在相同的技术边界内,因此我认为它们绝对是不同的东西。
如果我们对这两种方法使用相同的术语,这将非常令人困惑,这意味着我们需要对它们进行不同的定义,因为它们具有不同的行为。
它们都是“类型转换”,但是,它们是不同类型的类型转换:转换通常在相关对象类型之间进行(例如,从超类向下转换到子类),而编组可能来自例如对象图为纯文本表示。