我有这种Dictionary
:
Dictionary<string, object> dict
其中一个值是long
,这就是我尝试从Dictionary
获取它的方式:
long wantedid = (long)dict["wantedid"];
这是我得到的例外:
指定的演员表无效。
答案 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
}