0

私の VS2005 Web アプリケーションは、過去 2 年間正常に動作していました。しかし、今日突然 Invalid Cast の例外をスローし始めました。

私のコードは次のとおりです。

int DistID = (int) this.Session["DISTRIBUTOR_ID"];

このラインは 2 年以上正常に機能しました。

しかし、今突然無効なキャストの例外をスローし始めました。デバッグモードで確認しました

this.Session["DISTRIBUTOR_ID"]

有効な int 値は 1234 でした。

コードを次のように変更して問題を解決しました。

int DistID = Convert.ToInt32(this.Session["DISTRIBUTOR_ID"]);

しかし、上司はなぜこのエラーが突然発生したのかと私に尋ねました。

誰でもこの質問に答えることができますか?

4

1 に答える 1

4

Convert.ToInt32() 関数は解析関数を内部的に呼び出しますが、最初の実装ではボックス化とボックス化解除を使用しています。セッションの値は、割り当て時に整数型である必要があります。

于 2012-04-16T06:56:13.843 に答える