字典问题

本文关键字:问题 字典 | 更新日期: 2023-09-27 18:31:02

我有一个定义为字典(字符串,对象)的字典。 我正在毫无问题地访问字典中的其他值(字符串),但是当我尝试访问"int"时,我遇到了问题。当我尝试编译它时:

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

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

我非常乐意把头伸进沙子里,把它改写成这样:

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

。它确实可以编译,但在运行时我收到此错误:

无效转换异常:无法从源类型强制转换为目标类型。

谁能告诉我哪里出错了?

字典问题

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

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

Int32 不是可为 null 的类型,因此不能as应用于它。

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

这将起作用,请注意,如果强制转换失败,它将转换为 Nullable<int>然后合并为 0。

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

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

必须分析字符串中的整数。

您也可以简单地使用 Convert.ToInt32(value)、Int32.Parse() 或 Int32.TryParse [正如平淡无奇的建议]。所有这些都应该有效。

这样做:

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