我有这种类型Dictionary
:
Dictionary<string, object> dict
其中一个价值是long
,这就是我尝试从以下方面获取它的方式Dictionary
:
long wantedid = (long)dict["wantedid"];
这是我得到的例外:
指定的演员表无效。
您尝试读取的值显然不是一个long
值。由于您定义了Dictionary
as Dictionary<string, object>
,因此您可能已将任何类型的对象放入其中。
调试代码,并检查所需元素的值。您可以在 Watch 窗口中查看数据类型。
要在运行时检查类型,您可以尝试:
object o = dict["wantedid"];
if (o is long)
{
long wantedid = (long)o;
// ...
}
但是,如果您只需要存储long
值,请将字典定义为Dictionary<string, long>
.
您可以使用 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
}
您已经定义了值对,object
因为它还可能包含字符串值或其他任何内容。
所以假设如果它包含"Hello"
然后演员表显然是错误的。