具有长值的字典

时间:2013-03-16 12:54:11

标签: c# .net

我有这种Dictionary

Dictionary<string, object> dict

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

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

这是我得到的例外:

  

指定的演员表无效。

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:0)

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

因此假设它包含"Hello",那么演员阵容显然是假的。

答案 2 :(得分: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       
    }