C# 长值词典

C# 长值词典,c#,.net,C#,.net,我有这种类型的字典: Dictionary<string, object> dict long wantedid = (long)dict["wantedid"]; 这是我得到的一个例外: 指定的强制转换无效 您试图读取的值显然不是long值。由于您将字典定义为字典,因此您可以在其中放置任何类型的对象 调试代码,并检查所需元素的值。您可以在“监视”窗口中看到数据类型 要在运行时检查类型,可以尝试: object o = dict["wantedid"]; if (o is lon

我有这种类型的
字典

Dictionary<string, object> dict
long wantedid = (long)dict["wantedid"];
这是我得到的一个例外:

指定的强制转换无效


您试图读取的值显然不是
long
值。由于您将
字典
定义为
字典
,因此您可以在其中放置任何类型的对象

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

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

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

但是,如果只需要存储
long
值,请将字典定义为
dictionary

您试图读取的值显然不是
long
值。由于您将
字典
定义为
字典
,因此您可以在其中放置任何类型的对象

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

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

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

但是,如果只需要存储
long
值,请将字典定义为
dictionary

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


因此,假设它包含
“Hello”
,则强制转换将明显为false。

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


因此,假设它包含
“Hello”
,则强制转换将明显为false。

您可以使用TryParse来确保该值为long。可能是这样的:

    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       
    }

您可以使用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       
    }

如果该特定值为
,则您的强制转换应该有效。如何将对象放入字典?如果该特定值是
长的
,则您的强制转换应该有效。你是如何把这个对象放入字典的?