gpt4 book ai didi

c# - C# 中抛出 TypeCast 运算符异常

转载 作者:行者123 更新时间:2023-12-01 16:48:55 25 4
gpt4 key购买 nike

我在 C# 中的 TypeCast 转换中遇到了一些意外行为。

尝试转换时..

float f = 123124334234234.34F;

转换为整数,如下所示:

int i = (int)f;

我抛出异常。根据MSDN的说法“一般来说,隐式转换运算符不应该抛出异常,也不应该丢失信息,这样就可以在程序员不知情的情况下安全地使用它们”。

此外,根据视频中 7:54 标记处的这个人的说法,他陈述并展示了一个示例,其中使用类型转换运算符进行转换不会引发异常。

视频链接:http://www.youtube.com/watch?v=IcDaNmGDMoM&index=8&list=PLAC325451207E3105

那么为什么当我运行上面的代码时会出现 OverflowException 呢?

最佳答案

我想你可能有/checked+编译器标志设置。打开该功能后,通常会溢出的算术运算将在运行时抛出异常。

If an integer arithmetic statement that is not in the scope of a checked or unchecked keyword results in a value outside the range of the data type, and /checked+ (/checked) is used in the compilation, that statement causes an exception at run time.

使用以下代码:

float f = 123124334234234.34F;
int i = (int)f;

关闭该设置后,通常会溢出到负数。当标志打开时,它会抛出溢出异常。

编辑:也就是说,我不知道如何更改 SharpDevelop 中的该标志。 Visual Studio 的说明包含在上面的链接页面中;也许它们对于 SharpDevelop 来说是相似的。

关于c# - C# 中抛出 TypeCast 运算符异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com