施放或转换

时间:2011-01-19 16:28:11

标签: c# casting

在我的代码中,划分区域,是否被转换或转换?

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);

2 个答案:

答案 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));
}