读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(三)
生活随笔
收集整理的這篇文章主要介紹了
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【checked?和?unchecked?基元類型操作】
1.第一種使用方式
UInt32 invalid = unchecked((UInt32) (-1)); //OK,不會拋異常 Byte b = 100; b = checked((Byte) (b + 200));//拋出OverflowException異常2.第二種使用方式
checked {//開始一個checked塊Byte b = 100;b = (Byte) (b + 200);//該表達式會進行溢出檢查 }//結束一個checked塊簡化寫法
checked {Byte b = 100; b +=200; }【注意】
checked操作符 和 checked語句——唯一的作用就是決定生成哪個版本的加、減、乘和數據轉換IL指令,所以在一個checked操作符或者語句中調用一個方法,不會對該方法造成任何影響,如下例所示:
checked {//假定SomeMethod試圖把400加載到一個Byte中SomeMethod(400); //SomeMethod可能會、也可能不會拋出一個OverflowException異常 //如果SomeMethod 使用checked指令來編譯,就會拋出異常 //但這和當前的checked語句無關 }?【建議】
1.盡量使用有符號數值類型,而不要使用無符號數值類型。
2.代碼中,將不希望溢出的部分放到一個checked塊中,同時捕捉OverflowException。
3.代碼中,將允許發生溢出的代碼顯示的放到一個unchecked塊中。
4.對于沒有使用?checked?和?unchecked?的任何代碼,都假定你希望在發生溢出時拋出一個異常,此時的溢出應被視為bug。
轉載于:https://www.cnblogs.com/lishidefengchen/p/4478318.html
總結
以上是生活随笔為你收集整理的读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网页的一般布局(标题和脚注100%,内容
- 下一篇: C#进程与线程