閱讀776 返回首頁    go 阿裏雲 go 技術社區[雲棲]


該用Tryparse了

 

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

它的地址是:https://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.ToInt32int.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


參考博客:https://www.cnblogs.com/hnvvv/archive/2011/06/22/2086638.html

最後更新:2017-04-02 22:15:58

  上一篇:go 構造方法何時被調用
  下一篇:go tomcat的安裝使用