EN JP CN

CS.WRONG.CAST

CS.WRONG.CAST

この警告は、1 つのオブジェクトが、データを失ったかプログラム障害が発生した可能性がある別のオブジェクトにキャストされる状況で報告されます。

脆弱性とリスク

データが失われるか、プログラムが失敗する可能性があります。この状況は、キャストの後にプログラムが存在しないクラスフィールドにアクセスしようとすると、発生する可能性があります。

例 1

1  public class Object1 : Object2 {
2     public int a;
3  }
4  public class Object2 {
5     public int a;
6  }
7  public class ClassCastTests {
8     public void foo() {
9        Object1 o1;
10       Object2 o2 = new Object2();
11       o1 = (Object1)o2;
12    }
13 }

クラス Object1 のオブジェクト o1 とクラス Object2 のオブジェクト o2 は 5 ~ 6 行目で宣言されます。7 行目で、Object2 は Object1 にキャストされますが、これは無効です。