在转换int类型时可以调用转换错误吗?

时间:2012-08-05 12:58:27

标签: c# casting

这是一个有点不寻常的问题,但在构建数字类型时我无法获得转换错误。我需要得到一些错误,比如“值太短”等等,但似乎C#很好地保护它。 你能为我提供一个在投射时失败的简单代码吗? (比如stackoverflow ..)

3 个答案:

答案 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。