在C#语法中,溢出凡是有两种处置体例,第一种是在界说的时辰直接赋值跨越规模的值,这个时辰编译器就能查抄出来。第二种就是利用checked,在界说的时辰没有溢出,后续计较的时辰溢出了,那么,程序就会报错。
打开visual studio,建立一个节制台应用程序,用于演示C#语法中的checked查抄溢出,和unchecked不查抄溢出的利用。在Main方式中,界说一个byte类型的变量,直接赋值256,因为byte的规模是0到255,所以,编译器直接报错
点窜byte类型变量的初始值为255,然后,在后续代码中让其自增1,这个时辰理论上值到了256,可是,现实运行成果倒是0,跟预期的成果纷歧样,导致后续呈现异常时,排盘问题较难
在vs中,调试运行代码,可以在节制台窗口中看到运行的成果为0,不是256。可是,整个运行过程中也没有报错
若是想要避免呈现这样既不报错,也不是预期成果的环境,就可以利用checked关头字包裹这段代码,这样,在运行时,发现溢出,就会报错
继续在vs中,调试代码,就会发现呈现了:System.OverflowException:“算术运算导致溢出”的错误。这样就能避免不报错,成果也不合适预期的环境
假设,某些环境下,就是不但愿对溢出进行查抄,这个时辰就可以利用unchecked关头字,包裹不进行溢出查抄的代码段
再次在vs中调试,会发现,这一次没有溢出的错误了。可是,其实数据仍是溢出了。是以,现实项目中,碰到溢出的时辰,可以改换为规模更大的数据类型
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!