私はこのタイプを持っていますDictionary
:
Dictionary<string, object> dict
そして、値の1つはでありlong
、これは私がDictionary
:からそれを取得しようとする方法です。
long wantedid = (long)dict["wantedid"];
そして、これは私が得る例外です:
指定されたキャストは無効です。
あなたが読み込もうとしている値は明らかにlong
値ではありません。Dictionary
をとして定義したのでDictionary<string, object>
、任意のタイプのオブジェクトをその中に入れた可能性があります。
コードをデバッグし、必要な要素の値を調べます。ウォッチウィンドウでデータタイプを確認できます。
実行時にタイプを確認するには、次のことを試してください。
object o = dict["wantedid"];
if (o is long)
{
long wantedid = (long)o;
// ...
}
ただし、値のみを格納する必要がある場合long
は、ディクショナリをとして定義しますDictionary<string, long>
。
object
文字列値などが含まれている可能性があるため、値のペアを定義しました。
したがって、それが含まれている"Hello"
場合、キャストは明らかに誤りであると想定します。
TryParseを使用して、値が長いことを確認できます。これは次のようなものである可能性があります。
long wantedid;
bool isLong = long.TryParse(dict["wantedid"].ToString(), out wantedid);
if (isLong)
{
//do whatever you want to because you know the object can be a long
}