这是一个有点不寻常的问题,但我无法在投射数字类型时出现转换错误。我需要得到一些像“值太短”等错误,但似乎C#守护它很好。 你能否给我提供一个简单的代码,在铸造时失败? (如计算器..)投射int类型时可以调用铸造错误吗?
回答
可以使用checked关键字显式地检查整体类型转换的溢出:
int i = int.MaxValue;
short s = checked((short)i);
还有,它可以使检查转换默认的一个checked compiler flag。
你能否给我提供一个简单的代码,该代码在铸造时失败?
int i = 400;
object o = i; // here o will be System.Int32 automatically
string s = (string)o; //Runtime Exception thrown System.InvalidCastException:
这不是运行时错误;) – user970696 2012-08-05 13:10:41
@ user970696好吧坏了更新它 – HatSoft 2012-08-05 13:11:03
@ user970696我已经更新了我的答案,它会在运行时抛出错误在o时将字符串转换为字符串 – HatSoft 2012-08-05 13:13:00
这听起来像你正在尝试写一些错误处理代码。该编译器做看不当蒙上了伟大的工作,但如果你正在寻找一个运行时异常:
short y = short.Parse("56789");
这将引发OverflowException
。
OverflowException:值对于 Int16来说太大或太小。
- 1. 奇怪的铸造行为。不能投射对象(int)以长
- 2. Java泛型 - 错误铸造泛型类
- 3. 铸造匿名类型抛出铸造错误
- 4. 铸造接口可以在阵列类型上反射
- 5. Firebase Swift 3类型铸造错误
- 6. 窄铸造int到更小的类型
- 7. 类型铸造int到双java?
- 8. 铸造为int和浮点错误?
- 9. 错误铸造
- 10. 反射+的Linq +型铸造
- 11. 在Java中的类型铸造/铸造
- 12. C#类型在运行时使用反射铸造
- 13. Windbg类型铸造
- 14. SQL类型铸造
- 15. Python类型铸造
- 16. 类型铸造datetime
- 17. Oracle类型铸造
- 18. Java类型铸造
- 19. 我可以有条件地投射到不同的类型吗?
- 20. HQL铸造错误
- 21. 语法错误时铸造的字符串为int
- 22. 无法投射'System.Data.Objects.MaterializedDataRecord'类型的对象以键入'myEntity'错误
- 23. 确定反射类型是否可以投射到另一种反射类型
- 24. 型铸造在Haskell,分数和Int
- 25. 铸造界面{}在运行时类型
- 26. Django的类型错误: 'INT' 对象不是可调用
- 27. 类型铸造问题
- 28. Javascript数组类型铸造
- 29. 类型铸造自我
- 30. 铸造和类型问题
请您澄清一下您的期望?在将整数简写为short时,您明确地说“我知道int更大,我知道这个演员阵容可能会丢失数据,我仍然希望它。” – user1527329 2012-08-05 13:00:03
是的,我希望看到错误。我只是希望得到一个运行时错误。 – user970696 2012-08-05 13:02:17