字典问题
本文关键字:问题 字典 | 更新日期: 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"]);