0

我有这种类型Dictionary

Dictionary<string, object> dict

其中一个价值是long,这就是我尝试从以下方面获取它的方式Dictionary

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

这是我得到的例外:

指定的演员表无效。

4

3 回答 3

4

您尝试读取的值显然不是一个long值。由于您定义了Dictionaryas Dictionary<string, object>,因此您可能已将任何类型的对象放入其中。

调试代码,并检查所需元素的值。您可以在 Watch 窗口中查看数据类型。

要在运行时检查类型,您可以尝试:

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

但是,如果您只需要存储long值,请将字典定义为Dictionary<string, long>.

于 2013-03-16T12:55:51.337 回答
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 回答
0

您已经定义了值对,object因为它还可能包含字符串值或其他任何内容。

所以假设如果它包含"Hello"然后演员表显然是错误的。

于 2013-03-16T12:59:12.440 回答