作者optimist9266 (Optimist)
看板C_Sharp
標題Re: [問題] Parse和Convert的差別?
時間Sun Sep 4 22:47:07 2011
※ 引述《jung914 (諺)》之銘言:
: 如題~
: 剛剛我在實作一道題目想到的
: a = Convert.ToInt32(textBox1.Text);
: a = int.Parse(textBox1.Text);
: 我想請問以上這兩行都是把textbox1裡的文字轉換成數字
: 可是既然會分兩種寫法就一定會有他的道理
: 我想知道這個差別在哪裡?
: 希望有知道的人能替我解答 謝謝~
Int32.Parse(String) 是呼叫Number.ParseInt32方法,Convert.ToInt32(String)是呼叫
Int32.Parse(String)然後再呼叫Number.ParseInt32方法,兩者基本上完全沒有差別。
硬要說差別的話...Convert.ToInt32(String)如果你是丟null參照給它,他不會出現例外
狀況,它會直接擲回0,另一者則會出現例外狀況。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.41.104
1F:推 jung914:擲回0是重點 難怪我想說怎麼不會像另一個一樣出現例外^^" 09/04 23:07
2F:→ andymai:也不算"硬要說"吧~因為這的確是很大的差別~用錯丟出例外就 09/05 00:32
3F:→ andymai:算了~但沒丟出還丟回0以為是正常的就很糟糕了... 09/05 00:32
4F:→ andymai:另外還有TryParse~應該依照不同的需求選擇使用... 09/05 00:35
5F:→ cole945:那個0不是重點好嗎=.=|| 那是因為你都拿string來看所以會 09/05 01:30
6F:→ cole945:所以會以為有沒有exception還是0是梗. 09/05 01:31
7F:→ cole945:重點是parse是parser string, 但Convert是轉IConvertible 09/05 01:31
8F:→ cole945:Convert不是針對String在轉,看實作也可以throw exception 09/05 01:32
9F:推 hatasum:推樓上,能吃的東西差很多..... 09/06 00:11
10F:→ andymai:是沒錯~但我寫了四、五年~記得沒用過其它型態轉數字說... 09/06 00:35
11F:→ andymai:單純就string而言~這篇說的沒錯啊... 09/06 00:36
12F:→ andymai:anyway~雖然看的角度不一樣~但能找到正確寫法就好... 09/06 00:38
13F:→ kiki1503:大家怎麼都有辦法看到到內建函式的實作啊?? 09/06 20:17
14F:推 horngsh:可以去下載.NET原始碼或用Reflector來看。 09/07 18:27