本文仅为个人学习总结,如果错误请指正。
在编写代码时候,经常会遇到智能提示中出现checked和unchecked,也有可能与遇到尤其是数字类型转换问题出现的溢出等各种情况,那么应该了解一下checked和unchecked两个关键字和强制类型转换、Convert等知识。
需要了解的相关知识:
强制类型转换符()和里氏转换是两个不同的概念
1.如何设置项目级别的溢出检测
默认进行溢出检查
项目->属性->生成->高级->检查运算上溢/下溢
如果已经设置了项目级别的溢出检测,那么可以通过unchecked进行溢出抛出异常行为
2.使用强制转换符(),可以显示的告知编译器,忽略溢出行为。
通过demo进行说明
demo1:
这段代码可以在C#中正常编译,但是相加后的值可能会和想象的有所不同。
说明:
C#是类型安全的语言,所以使用使用强制转换符()进行显示的强制转换,编译器会自动忽略窄化数据类型转换所出现的溢出情况。
当这种情况可能会出现时,但是我们需要进行避免或者捕获时候,使用checked捕获溢出行为。
int numA = 100;
int numB = 200;
//byteValue值为44
byte byteValue =(byte)(n