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