五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > C#中類型轉(zhuǎn)換Convert.ToInt32()和int.Parse()的用法和區(qū)別

C#中類型轉(zhuǎn)換Convert.ToInt32()和int.Parse()的用法和區(qū)別

文章來源:365jz.com     點(diǎn)擊數(shù):1739    更新時(shí)間:2018-06-05 20:46   參與評(píng)論

C#整數(shù)三種強(qiáng)制類型轉(zhuǎn)換int、Convert.ToInt32()、int.Parse()的用法和區(qū)別:

1、int適合簡單數(shù)據(jù)類型之間的轉(zhuǎn)換,C#的默認(rèn)整型是int32(不支持bool型);

2、int.Parse(string sParameter)是個(gè)構(gòu)造函數(shù),參數(shù)類型只支持string類型;

3、Convert.ToInt32()適合將Object類型轉(zhuǎn)換為int型;

4、Convert.ToInt32()和int.Parse()的細(xì)微差別:

對(duì)于空值(null)的處理不 同,Convert.ToInt32(null)會(huì)返回0而不會(huì)產(chǎn)生任何異常,但int.Parse(null)則 會(huì)產(chǎn)生異常。

例子,

string test="1234";

int num=Convert.ToInt32(test);

最終,num=1234.

但是,如果string為空字符串"",即string test="";

int num=Convert.ToInt32(test);

num=0嗎?

不是的。這個(gè)時(shí)候?qū)伋霎惓?。因此,解決的辦法就是:

int num=Convert.ToInt32("0"+test);

舉例來說:

假如從url中取一個(gè)參數(shù)page的值,我們知道這個(gè)值是一 個(gè)int,所以即可以用Convert.ToInt32(Request.QueryString["page"]),也可以 用int.Parse(Request.QueryString["page"]),但是如果page這個(gè)參數(shù)在url中不 存在,那么前者將返回0,0可能是一個(gè)有效的值,所以你不知道url中原來根本就沒有這個(gè)參數(shù)而繼續(xù)進(jìn)行下一步的處理,這就可能產(chǎn)生意想不到的效果;而用后 一種方法的話沒有page這個(gè)參數(shù)則會(huì)拋出異常,我們可以捕獲異常然后再做相應(yīng) 處理,比如提示用戶缺少參數(shù)等,而不是把參數(shù)值當(dāng)做0來處理。

5、再有一點(diǎn)區(qū)別是:

(1).Convert.ToInt32(double value) 如果 value 為兩個(gè)整數(shù)中間的數(shù)字,則返回二者中的偶數(shù);即 4.5 轉(zhuǎn)換為 4,而 5.5 轉(zhuǎn)換為 6;

(2). int(4.6) = 4,int轉(zhuǎn)化其他數(shù)值類型為int時(shí)沒有四舍五入,強(qiáng)制轉(zhuǎn)換(截取整數(shù)部分);

(3). int.Parse(4.5) 會(huì)直接報(bào)錯(cuò):"輸入字符串的格式不正確"。

int.Parse是轉(zhuǎn)換String為int;

Convert.ToInt32是轉(zhuǎn)換繼承自O(shè)bject的對(duì)象為int的; 你得到一個(gè)object對(duì)象,你想把它轉(zhuǎn)換為int,用int.Parse就不可以,要用 Convert.ToInt32.

總結(jié):

(1)Convert.ToInt32的參數(shù)比較多,Int.Parse只能轉(zhuǎn)換string類型的.

(2)Parse就是把String轉(zhuǎn)換成int,char,double....等,也就是*.Parse(string) 括號(hào)中的一定要是string.

(3)Convert可以提供多種類型的轉(zhuǎn)換,也就是Convert.*()括號(hào)中可以為很多種類 型(包括string).


Convert.ToInt32()和int.Parse()的區(qū)別


(1)Convert.ToInt32(null)會(huì)返回0而不會(huì)報(bào)異常,但int.Parse(null)則會(huì)產(chǎn)生異常

(2)Convert.ToInt32("")和int.Parse("")都會(huì)產(chǎn)生異常,兩個(gè)方法的參數(shù)不能為空字符串。

(3)  

  a. Convert.ToInt32(double value)
如果 value 為兩個(gè)整數(shù)中間的數(shù)字,則返回二者中的偶數(shù);即 3.5轉(zhuǎn)換為4,4.5 轉(zhuǎn)換為 4,而 5.5 轉(zhuǎn)換為 6。  不過4.6可以轉(zhuǎn)換為5,4.4轉(zhuǎn)換為4
  b. int.Parse("4.5") 
直接報(bào)錯(cuò):"輸入字符串的格式不正確".

  c. int(4.6) = 4
Int轉(zhuǎn)化其他數(shù)值類型為Int時(shí)沒有四舍五入,強(qiáng)制轉(zhuǎn)換

Convert.ToInt32()的參數(shù)有很多個(gè),而int.Parse()的參數(shù)只能是string類型的。Parse就是把string轉(zhuǎn)換為int,double,char 等等。*.Parse(string)括號(hào)中一定要是string類型的。

 

     static void Main(string[] args)
        {
            double d = 1.3789;
            var result = d - Convert.ToInt32(d);
            Console.WriteLine(result);
        }//輸出:0.3789

看似結(jié)束了,其實(shí)呢,現(xiàn)在double值變?yōu)榱?.6789。結(jié)果是這樣的說說Convert.ToInt32、int.Parse與(int)那些事

難道它是傳說中的“四舍五入”?有可能。沒那么簡單、沒那么簡單。我把double值又改變了,是不是“四舍五入”呢,請(qǐng)看圖說說Convert.ToInt32、int.Parse與(int)那些事

說說Convert.ToInt32、int.Parse與(int)那些事

哈哈,結(jié)果很明顯了。原來它如男人喜歡美女一樣,Convert.ToInt32喜歡偶數(shù)!誰又不是喜歡成雙入對(duì)呢?結(jié)論:四舍六入五湊偶

明顯上邊的代碼無法滿足需求了,怎么辦呢?據(jù)說轉(zhuǎn)換還可以這樣寫。

 static void Main(string[] args)
    {
       double d = 1.3789;
       var result = d - (int)d;
       Console.WriteLine(result);
    }

說說Convert.ToInt32、int.Parse與(int)那些事

這次無論我怎么改變double的值,(int)d的結(jié)果就是小數(shù)點(diǎn)前面的值。直到我腦殘的做出了這個(gè)決定:說說Convert.ToInt32、int.Parse與(int)那些事

好吧,我又錯(cuò)了。結(jié)論:只要你的值不腦殘,結(jié)果還挺美好。

好偉大的需求阿。我出絕招了:

說說Convert.ToInt32、int.Parse與(int)那些事

這次不會(huì)出現(xiàn)問題了吧。結(jié)論:不考慮性能的前提下,建議使用這變態(tài)方式。


如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1739人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)