最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用checked語(yǔ)句防止數(shù)據(jù)溢出的解決方法

 更新時(shí)間:2013年05月18日 09:33:12   作者:  
本篇文章是對(duì)用checked語(yǔ)句防止數(shù)據(jù)溢出的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在C#中有一個(gè)關(guān)鍵字checked,它用來(lái)判斷當(dāng)前上下文中的數(shù)值運(yùn)算和數(shù)值轉(zhuǎn)換是否會(huì)溢出。如是是常量溢出,那在編譯時(shí)就能發(fā)現(xiàn);如果是變量溢出,那在運(yùn)行時(shí)會(huì)拋出OverflowException。
數(shù)值運(yùn)算有:++   —   - (unary)   +   -   *   /

有了這個(gè)就不用擔(dān)心數(shù)據(jù)溢出了。

checked
checked 有兩種使用方法:
1.作為操作符來(lái)使用
復(fù)制代碼 代碼如下:

int a = int.MinValue;
int c = checked(a--);

執(zhí)行的時(shí)候會(huì)拋出異常:

image

2.檢查一大塊代碼:
這樣子會(huì)對(duì)里面所有的代碼都做檢查
復(fù)制代碼 代碼如下:

checked
{
    int a = int.MinValue;
    int c = a--;
}

如下圖:

image

unchecked
和checked對(duì)應(yīng),還有一個(gè)unchecked關(guān)鍵字,用來(lái)取消檢查。
也是兩種使用;
1.作為運(yùn)算符:

復(fù)制代碼 代碼如下:

int a = int.MinValue;
int c = unchecked(a--);

這樣子就不會(huì)拋異常了

image

2.檢查一大塊代碼

復(fù)制代碼 代碼如下:

unchecked
{
    int a = int.MinValue;
    int c = a--;
}

也不拋異常:

image

/checked 和/checked-
如果代碼里總是要寫(xiě)這么多checked語(yǔ)句是不是很煩?如果能有一個(gè)編譯參數(shù)就好,只有設(shè)置了就都會(huì)檢查。微軟也想到了這個(gè),它提供了一個(gè)/checked 參數(shù)來(lái)做,也提供了一個(gè)/checked-來(lái)取消。
•溢出檢查 /checked,也可以是/checked+
•溢出不檢查 /checked-
當(dāng)然,你想取消所有的檢查也是可以的,命令行參數(shù)是/checked-
復(fù)制代碼 代碼如下:

csc t2.cs /checked

其中csc是編譯器csc.exe , t2.cs 是被編譯的代碼文件。
我想很多人是用Visual Studio吧。VS里也是可以設(shè)置的。
步驟如下,我以VS2010為例,(VS2005,2008差不多)
1。在工程上點(diǎn)右鍵,選擇菜單Properties

image

2。點(diǎn)擊“Build”,再點(diǎn)擊“Advanced”

image

3。在打開(kāi)的對(duì)話框中,把“Check for arithmetic overflow/underflow”打上勾

image

幾個(gè)注意
1.checked語(yǔ)句只對(duì)當(dāng)前上下文中的代碼有效,即不對(duì)調(diào)用的函數(shù)內(nèi)部做檢查。

復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
    checked
    {
        TestFun();
    }
}
static void TestFun()
{
    int a = int.MinValue;
    int c = a--;
}

這段代碼中。不會(huì)跑異常,因?yàn)閏hecked關(guān)鍵字沒(méi)有影響到TestFun內(nèi)部。如果需要這么做的話,要么在TestFun內(nèi)部加checked關(guān)鍵字,要么打開(kāi)全局開(kāi)關(guān)(加編譯參數(shù)/checked或者VS中設(shè)置)。
2.checked,unchecked關(guān)鍵字不檢查左移和右移是否溢出。
復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
    checked
    {
        int a = int.MinValue;
        int c = a>>1;
    }
}

執(zhí)行不會(huì)拋異常:

image

3.為了性能考慮,建議Debug時(shí)做檢查,Release時(shí)不做檢查。

相關(guān)文章

  • C#讀寫(xiě)Excel的流程步驟

    C#讀寫(xiě)Excel的流程步驟

    這篇文章主要介紹了詳解C#讀寫(xiě)Excel的流程步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起來(lái)學(xué)習(xí)吧
    2023-12-12
  • C#程序最小化到托盤(pán)圖標(biāo)操作步驟與實(shí)現(xiàn)代碼

    C#程序最小化到托盤(pán)圖標(biāo)操作步驟與實(shí)現(xiàn)代碼

    設(shè)置窗體屬性showinTask=false;加notifyicon控件notifyIcon1,為控件notifyIcon1的屬性Icon添加一個(gè)icon圖標(biāo);添加窗體最小化事件(首先需要添加事件引用)接下來(lái)介紹實(shí)現(xiàn)代碼,感興趣的朋友可以研究下
    2012-12-12
  • C#子線程執(zhí)行完后通知主線程的方法

    C#子線程執(zhí)行完后通知主線程的方法

    下面小編就為大家?guī)?lái)一篇C#子線程執(zhí)行完后通知主線程的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C#獲取時(shí)間戳的方法及時(shí)間戳轉(zhuǎn)換問(wèn)題

    C#獲取時(shí)間戳的方法及時(shí)間戳轉(zhuǎn)換問(wèn)題

    本文主要介紹了C#獲取時(shí)間戳的方法及時(shí)間戳轉(zhuǎn)換問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#?模式匹配完全指南

    C#?模式匹配完全指南

    模式匹配是一種高端的使用機(jī)制,它允許程序員在開(kāi)發(fā)的時(shí)候以對(duì)象的類型作為條件篩選和分情況處理的一種手段,本文給大家介紹C#?模式匹配完全指南,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • .net(c#)中的new關(guān)鍵字詳細(xì)介紹

    .net(c#)中的new關(guān)鍵字詳細(xì)介紹

    在 C# 中,new 關(guān)鍵字可用作運(yùn)算符、修飾符或約束
    2013-10-10
  • C#基礎(chǔ)繼承和多態(tài)詳解

    C#基礎(chǔ)繼承和多態(tài)詳解

    C#基礎(chǔ)繼承和多態(tài)詳解,需要的朋友可以參考一下
    2013-03-03
  • Winform界面中實(shí)現(xiàn)菜單列表的動(dòng)態(tài)個(gè)性化配置管理方法

    Winform界面中實(shí)現(xiàn)菜單列表的動(dòng)態(tài)個(gè)性化配置管理方法

    下面小編就為大家分享一篇Winform界面中實(shí)現(xiàn)菜單列表的動(dòng)態(tài)個(gè)性化配置管理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C#實(shí)現(xiàn)的滾動(dòng)網(wǎng)頁(yè)截圖功能示例

    C#實(shí)現(xiàn)的滾動(dòng)網(wǎng)頁(yè)截圖功能示例

    這篇文章主要介紹了C#實(shí)現(xiàn)的滾動(dòng)網(wǎng)頁(yè)截圖功能,結(jié)合具體實(shí)例形式分析了C#圖形操作的相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • 詳解如何利用C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音功能

    詳解如何利用C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音功能

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)漢字轉(zhuǎn)拼音的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12

最新評(píng)論

广东省| 苗栗市| 长寿区| 花莲市| 鹤山市| 昭通市| 瑞安市| 莱芜市| 贵州省| 旅游| 郎溪县| 河西区| 江源县| 孙吴县| 兰西县| 宁安市| 星座| 西藏| 邻水| 玛纳斯县| 上蔡县| 宝应县| 徐汇区| 扎囊县| 万宁市| 丰城市| 清苑县| 梓潼县| 长海县| 积石山| 焦作市| 高陵县| 长海县| 彭泽县| 雷山县| 遂溪县| 宽甸| 邓州市| 亚东县| 福海县| 稷山县|