私は迷っています。私は文字列キーを持つ辞書オブジェクトを持っています。オブジェクトは私が持っているカスタムタイプです。この例では、InvalidCastExceptionがスローされます:Dictionary.TryGetValue(String、outオブジェクト)を呼び出すときにInvalidCastExceptionが発生します。どうして?
MyObject temp;
if(Dict.TryGetValue("abc", out temp)) //exception
私が代わりに "にContainsKey" を使用している場合は、私はまだInvalidCastExceptionが取得:
if(Dict.ContainsKey("abc")) //exception
どちらの場合も、私はDictの上の時計を置く場合は[ "ABC"]私は辞書から必要な価値を得ています。例外の詳細には、追加情報はありません。
この状況を複製する小さなコードサンプルをまとめてみましたが、私のコードサンプルは完全に機能します。私はこの問題のコードサンプルを提供する方法を知らない。
ディクショナリ内のキーの存在をチェックするときにInvalidCastExceptionが発生するのはなぜですか?なぜContainsKeyは実装でキャストを行う必要がありますか?これをどうやって解決するのですか?
これを再現することはできません。例外には*情報はありませんか?おそらく、スタックトレース?誰がどのように手伝うことができるのかは明確ではありません。 –
あなたは辞書の宣言を投稿できますか? ContainsKeyは、InvalidCastExceptionではなくArgumentNullExceptionをスローするだけなので、あなたが辞書の宣言の前に行っていることやそれと関係があるものです。 – Jetti
Dictの宣言を追加できますか? –