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。

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。