2013-03-16 49 views
0

我有这种类型的Dictionary字典长值

Dictionary<string, object> dict 

而且价值之一是long,这是我尝试从Dictionary得到它:

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

这是我得到的例外:

指定的转换无效。

+0

如果这个特定的值是一个“长”,那么你的演员应该工作。你如何将对象放入字典中? – LukeH 2013-03-16 12:56:19

回答

4

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

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

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

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

不过,如果你只需要存储long值,定义字典为Dictionary<string, long>

0

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

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

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  
    }