私はこのタイプを持っています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
}