CS.WRONG.CAST.MIGHT
如果一个对象可转换为另一个对象,且可能丢失数据,或甚至发生程序故障,这种情况下将报告此警告。
漏洞与风险
可能丢失数据,或程序发生故障。当程序尝试在进行转换后访问不存在的类字段时,可能发生此情况。
示例
复制
public class Object1 : Object2 {
public int a;
}
public class Object2 {
public int b;
}
public class ClassCastTests {
public void foo() {
Object1 o1;
Object2 o2 = new Object2();
if (flag)
o1 = (Object1)o2;
}
private bool flag;
}
第 9-10 行声明了类 Object1 的对象 o1 和类 Object2 的对象 o2。然后,在第 12 行,根据第 11 行的无效标记,Object2 可转换为 Object1。