这是一个有点不寻常的问题,但在构建数字类型时我无法获得转换错误。我需要得到一些错误,比如“值太短”等等,但似乎C#很好地保护它。 你能为我提供一个在投射时失败的简单代码吗? (比如stackoverflow ..)
答案 0 :(得分:4)
您可以使用checked关键字明确检查整数类型转换的溢出:
int i = int.MaxValue;
short s = checked((short)i);
还有一个checked compiler flag可以将已检查的转化设置为默认值。
答案 1 :(得分:0)
你能为我提供一个在投射时失败的简单代码吗?
int i = 400;
object o = i; // here o will be System.Int32 automatically
string s = (string)o; //Runtime Exception thrown System.InvalidCastException:
答案 2 :(得分:0)
听起来你正在尝试编写一些错误处理代码。编译器确实可以很好地观察不适当的强制转换,但是如果您正在寻找运行时异常:
short y = short.Parse("56789");
这将抛出OverflowException
。
OverflowException:值太大或太小了 INT16。