0

私はこのタイプを持っていますDictionary

Dictionary<string, object> dict

そして、値の1つはでありlong、これは私がDictionary:からそれを取得しようとする方法です。

long wantedid = (long)dict["wantedid"];

そして、これは私が得る例外です:

指定されたキャストは無効です。

4

3 に答える 3

4

あなたが読み込もうとしている値は明らかにlong値ではありません。Dictionaryをとして定義したのでDictionary<string, object>、任意のタイプのオブジェクトをその中に入れた可能性があります。

コードをデバッグし、必要な要素の値を調べます。ウォッチウィンドウでデータタイプを確認できます。

実行時にタイプを確認するには、次のことを試してください。

object o = dict["wantedid"];
if (o is long)
{
    long wantedid = (long)o;
    // ...
}

ただし、値のみを格納する必要がある場合longは、ディクショナリをとして定義しますDictionary<string, long>

于 2013-03-16T12:55:51.337 に答える
0

object文字列値などが含まれている可能性があるため、値のペアを定義しました。

したがって、それが含まれている"Hello"場合、キャストは明らかに誤りであると想定します。

于 2013-03-16T12:59:12.440 に答える
0

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       
    }
于 2013-03-16T13:40:12.873 に答える