在我的代码中,划分区域,是否被转换或转换?
static List<int> b;
MemoryStream c = new MemoryStream();
BinaryFormatter g=new BinaryFormatter();
g.Serialize(c,b);
byte[] ui= c.ToArray();
c.Position = 0;
List<int> hj = (List<int>)g.Deserialize(c);
答案 0 :(得分:1)
使用(List<int>)****
,如果无法将反序列化的对象强制转换为目标类型,则执行强制转换。投射与System.Convert
无关。为了从一个类型转换到另一个System.Convert必须知道如何做(并且这是为基类型完成的),或者您的自定义类型必须实现IConvertible
。
答案 1 :(得分:1)
您正在通过写作(列表)g.Deserialize(c);
进行投射您可以随时使用“is”运算符检查是否可以投射:
ClassA obj1 = new ClassA();
ClassB obj2 = new ClassB();
if(obj1 is ClassB) {
//you can cast
}
在您的代码中,您可以实现:
if(g.Deserialize(c) is List<int>) {
List<int> hj = (List<int>)(g.Deserialize(c));
}