天天看點

該用Tryparse了

看到一篇文章“c#判斷字元串是否為數字字元串“

它的位址是:http://www.cnblogs.com/cobblestone/archive/2011/06/21/2086397.html,

作者用兩種方法來判斷字元串是否為數字。其中一種是将字元串進行一次強制轉換,再用try來容錯,成功轉換則證明該字元串是數字,否則就不是!

看到這樣的代碼我是很淡定的,因為這種方法我見得很多,包括我公司現在的項目裡面還有這樣的代碼,以及我還在一些開源的項目裡面看到過類似的代碼。但無疑,這種方法是效率很低下的,我很奇怪的是,明明有很好用的tryparse為什麼舍充不用呢!

同樣,判斷字元串是否為空明明有string.isnullorempty方法去判斷,而很多代碼中還是喜歡通過if(符串==""||符串==null)來判斷!

據本人估計,這兩種方法都是.net 2.0中出來的新方法,估計很多同學還在受1.1的影響,看來知識的更新很重要!細節也很重要。

那麼tryparse該怎麼用呢?

convert.toint32

int.parse(int32.parse)

int.tryparse

(int)

四者都可以解釋為将類型轉換為 int,那它們的差別是什麼呢?

convert.toint32 與 int.parse 較為類似,實際上 convert.toint32 内部調用了 int.parse:

convert.toint32 參數為 null 時,傳回 0;

int.parse 參數為 null 時,抛出異常。  

convert.toint32 參數為 "" 時,抛出異常;

int.parse 參數為 "" 時,抛出異常。 

convert.toint32 可以轉換的類型較多;

int.parse 隻能轉換數字類型的字元串。

int.tryparse 與 int.parse 又較為類似,但它不會産生異常,轉換成功傳回 true,轉換失敗傳回 false。最後一個參數為輸出值,如果轉換失敗,輸出值為 0。

int m; 

if(int.tryparse("2"),out m)

{

...

}

傳回true ,運作{}内,并給m指派為2;

if(int.tryparse("ddd"),out m)

傳回false,不運作if{}内,并給m指派為0

參考部落格:http://www.cnblogs.com/hnvvv/archive/2011/06/22/2086638.html