0

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

4

3 回答 3

4

您可以使用checked关键字显式检查整数类型转换的溢出:

int i = int.MaxValue;
short s = checked((short)i);

还有一个检查编译器标志,可以使检查转换成为默认值。

于 2012-08-05T13:06:33.493 回答
0

你能给我提供一个在转换失败的简单代码吗?

int i = 400;
object o = i; // here o will be System.Int32 automatically

string s = (string)o; //Runtime Exception thrown System.InvalidCastException:
于 2012-08-05T13:09:43.910 回答
0

听起来您正在尝试编写一些错误处理代码。编译器在监视不适当的强制转换方面做得很好,但是如果您正在寻找运行时异常:

short y = short.Parse("56789");

这将抛出一个OverflowException.

OverflowException: 对于 Int16,值太大或太小。

于 2012-08-05T13:10:34.053 回答