字典问题

时间:2013-09-12 18:07:48

标签: c# dictionary

我将Dictionary定义为Dictionary(string,object)。我正在访问字典中的其他值(字符串)而没有问题,但是当我尝试访问'int'时,我遇到了问题。当我尝试编译时:

            int score = obj["score"] as int;

我收到错误:''as'运算符不能与非可空值类型'int'一起使用

我很高兴把头埋在沙子里,我把它重新编写为:

        int score = (int) obj["score"];

...它确实编译但在运行时我收到此错误:

InvalidCastException:无法从源类型转换为目标类型。

谁能告诉我哪里出错?

4 个答案:

答案 0 :(得分:2)

http://msdn.microsoft.com/en-us/library/cscsdfbt(v=vs.90).aspx

  

as运算符就像一个强制转换操作。但是,如果转换   是不可能的,因为返回null而不是引发异常

Int32不是可以为空的类型,因此as无法应用于它。

int score = obj["score"] as int? ?? 0;

这样可行,注意它正在转换为Nullable<int>,然后如果转换失败则合并为0。

答案 1 :(得分:0)

假设您的值是一个字符串:

int score = -1;
int.TryParse(obj["score"], out score);

您必须从字符串中parse the integer

答案 2 :(得分:0)

你也可以简单地使用Convert.ToInt32(value),Int32.Parse()或Int32.TryParse [作为bland建议]。所有这些都应该有用。

答案 3 :(得分:0)

这样做:

 int score = Convert.ToInt32(obj["score"]);