2018-7-29-C#-强转会不会抛出异常
2023-09-27 14:28:50 时间
title | author | date | CreateTime | categories |
---|---|---|---|---|
C# 强转会不会抛出异常 |
lindexi |
2018-7-29 14:24:1 +0800 |
2018-4-4 16:24:2 +0800 |
C# |
最近遇到一个小伙伴问我,从一个很大的数强转,会不会抛出异常。实际上不会出现异常。
最简单的代码是使用一个比 maxvalue 大的数,然后用它强转
long tathkDucmmsc = int.MaxValue ;
tathkDucmmsc *= 2;
int kuplStqfbbmx = (int) tathkDucmmsc; // -2
结果没有异常,只是拿到的值是 -2
但是因为默认是 unchecked
如果把上面的代码添加checked
,那么就会出异常
checked
{
long tathkDucmmsc = int.MaxValue;
tathkDucmmsc *= 2;
int kuplStqfbbmx = (int) tathkDucmmsc;
}
System.OverflowException:“Arithmetic operation resulted in an overflow.”
但是对于 float ,他的值就不是这样了
checked
{
double hcmzgSsby = float.MaxValue;
hcmzgSsby *= 2;
float djmmmkvawSswu = (float)hcmzgSsby;
}
可以看到 djmmmkvawSswu 的值是 Infinity 不会出现异常,所以对于浮点数不要通过异常来判断强转是不是超过最大值。
那么如何判断 Infinity ? 使用float.IsInfinity
或 double.IsInfinity
都可以判断。
相关文章
- C#:异常处理(转载18)
- C#集合Collections购物车Shopping Cart
- C#---VS平台运行程序弹出Scriptedbox64.exe--Fail Fast Exception异常
- C# 获取当前方法的名称空间、类名和方法名称
- C#图像处理-OpenCVSharp教程(三十三) OpenCVSharp特征检测与匹配(二)---SIFT特征匹配
- C#底层库--数据实体类
- C#进阶系列——MEF实现设计上的“松耦合”(终结篇:面向接口编程)
- unity3D Socket连接C#server出现unity3D编辑器再次启动连接 unity3D编辑器马上卡死
- Unity手游崩溃异常如何捕获 C#及JVM捕获
- Unity3d C#实现基于SocketIOUnity的与后端(node.js为例)Socket通信功能(含工程)
- C# post数据时 出现如下错误: System.Net.WebException: 操作超时
- c#获取当前日期时间
- 2018-7-29-C#-强转会不会抛出异常
- 2019-8-31-C#-控制台使用-UAC-权限
- C# 遍历枚举
- C# 强转会不会抛出异常