<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      pollying

      導航

      C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的區別 <轉>

      作者:Statmoon    
       

      在編程過程中,數據轉換是經常要用到的,C#中數據轉換的方法很多,拿將目標對象轉換為整型(int)來講,有四種方法:分別為(int)、int.Parse()、int.TryParse()和Convert.ToInt32(),那么這四種方法對被轉換對象有什么限制,以及各自之間有什么區別呢?相信很多童鞋也不能完全說清楚。

      下面從被轉換對象說起,在我們實際開發項目的過程中,我們碰到需要被轉換的類型大概有3大類,分別是空值(NULL)、數字類型(包含float,double,int,long等)和字符串(string)這3類。

      先看第一種情況:NULL,采用如下代碼進行測試:

      int a = Convert.ToInt32(null);
      int b;
      bool rlt = int.TryParse(null, out b);
      int c = int.Parse(null);
      int d = (int)null;

      很明顯,在運行之前VS就會在最后一句報錯:“Cannot convert null to 'int' because it is a non-nullable value type”,這是說不能將NULL轉換為INT因為INT是一個非空值類型,然后注釋掉最后一句,再運行一下,發現這一句(int c = int.Parse(null);)會報如下錯誤:“Value cannot be null.”,值不能為空,a和b分別返回0,rlt為false;

      然后繼續看第二種情況:數字類型(主要測試double和long類型),先將代碼修改如下:

      double m = 1.232d;
      int a = Convert.ToInt32(m);
      int b;
      bool rlt = int.TryParse(m.ToString(), out b);
      int c = int.Parse(m.ToString());
      int d = (int)m;

      然后運行一下,發現這一句(int c = int.Parse(m.ToString());)會報錯:“Input string was not in a correct format.”,輸入的字符串格式不正確,注釋掉這一句然后運行,然后查看返回值,a=1,b=0,rlt=false,d=1,將m的值修改為1.532d后再運行一次,查看結果為a=2,b=0,rlt=false,d=1;下面測試long類型,將代碼修改為:

      long m = 9223372036854775807;
      int a = Convert.ToInt32(m);
      int b;
      bool rlt = int.TryParse(m.ToString(), out b);
      int c = int.Parse(m.ToString());
      int d = (int)m;

      運行后發現(int a = Convert.ToInt32(m);)和(int c = int.Parse(m.ToString());)報錯:“Value was either too large or too small for an Int32.”,值對于Int32太大或太小,其他返回結果b=0,rlt=false,d=-1;

      下面繼續看第三種情況:字符串,同樣修改代碼如下:

      string m = "1.32";
      int a = Convert.ToInt32(m);
      int b;
      bool rlt = int.TryParse(m, out b);
      int c = int.Parse(m);
      int d = (int)m;

      發現最后一句(int d = (int)m;)報錯:“Cannot convert type 'string' to 'int'”,不能轉換string到int類型,同樣注釋掉這句再運行,發現(int a = Convert.ToInt32(m);)和(int c = int.Parse(m);)均報如下的錯誤:“Input string was not in a correct format.”,輸入的字符串格式不正確,只有將m的值修改為整型的字符串(如:”12”)才不會報如此錯誤。

      好了,測試做完了,下面進行總結:

      1)對于轉換對象,Convert.ToInt32()可以為多種類型(例出數字類型外bool,DateTime等),int.TryParse()和int.Parse()只能是整型字符串類型(即各種整型ToString()之后的形式,不能為浮點型,否則int.Parse()就會出現輸入的字符串格式不正確的錯誤,int.TryParse()也會返回false,輸出參數為0),(int)只能是數字類型(例float,int,uint等);

      2)對于空值NULL,從運行報錯的角度講,(int)強制轉換和int.Parse()都不能接受NULL;Convert.ToInt32()其實是在轉換前先做了一個判斷,參數如果為NULL,則直接返回0,否則就調用int.Parse()進行轉換,int.TryParse()其實是對int.Parse()做了一個異常處理,如果出現異常則返回false,并且將輸出參數返回0;

      3)針對于浮點型的取舍問題,浮點型只有Convert.ToInt32()和(int)能進行轉換,但是也是進行取舍了的,Convert.ToInt32()采取的取舍是進行四舍五入,而(int)則是截取浮點型的整數部分,忽略小數部分,例如Convert.ToInt32(1.499d)和(int)1.499d都返回1,Convert.ToInt32(1.5d)返回2,而(int)1.5d還是返回1;

      4)關于溢出,將大的數據類型轉換為小的數據類型時Convert.ToInt32()和int.Parse()都會報溢出錯誤,值對于Int32太大或太小,而(int)不報錯,但是返回值為-1。

      如此可見,我們在進行數據轉換前選擇轉換方法要謹慎,如果是數字類型可以考慮直接用(int)強制轉換,如果是整型字符串類型的,考慮用int.Parse()進行轉換,如果不是這兩種類型,再考慮用Convert.ToInt32()進行轉換。

       

      posted on 2015-08-14 12:01  pollying  閱讀(216)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 97一期涩涩97片久久久久久久| 噜噜综合亚洲av中文无码| 亚洲日韩性欧美中文字幕| 九九热爱视频精品| 成人免费在线播放av| 一本加勒比hezyo无码人妻| 国产一卡2卡三卡4卡免费网站| 刚察县| 国偷自产一区二区三区在线视频 | AV秘 无码一区二| 日韩乱码人妻无码中文字幕视频| 国产乱码精品一区二区三| 国产免费无遮挡吃奶视频| 精品国产午夜理论片不卡| 青青青青久久精品国产| 亚洲色欲色欲大片www无码| 国产精品日本一区二区不卡视频| 91福利国产午夜亚洲精品| 日韩蜜桃AV无码中文字幕不卡高清一区二区| 亚洲夂夂婷婷色拍ww47| 欧美黑人乱大交| 四虎精品永久在线视频| 爆乳2把你榨干哦ova在线观看| 任我爽精品视频在线播放| 国产精品中文字幕第一页| 欧美奶涨边摸边做爰视频| 天堂亚洲免费视频| 亚洲国产成人精品区综合| 房东老头揉捏吃我奶头影片| 精品不卡一区二区三区| 久久99日本免费国产精品| 亚洲成人av在线系列| 日韩人妻无码精品系列| 粉嫩国产一区二区三区在线| 亚洲第一极品精品无码久久| 国内在线视频一区二区三区| 亚洲欧美日韩久久一区二区| 日本美女性亚洲精品黄色| 免费视频成人片在线观看| 美女黄18以下禁止观看| 免费无码一区无码东京热|