2017-02-15 27 views
-2

我有許多字符串被解析爲整數值的代碼。int.TryParse之前的空值檢查

string item = null; //or a value 
int result; 
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result)) 
{ 
    //do stuff 
} 

是否真的需要每次檢查IsNullOrEmpty?如果它是null或爲空,解析應該失敗。

+5

你可以在問之前自己測試一下。不,這不是必需的。那麼'TryParse'返回'false'。如果嘗試解析失敗, –

+0

結果將爲0。 –

+0

@TimSchmelter可以這樣做,但是這種機械特魯克方法可以爲這個問題提供即燃即用的解決方案。花同樣的時間來創建一個簡單的問題,一起吃午飯,回來的答案 - 有描述這種現象的幾句話,但他們;-) –

回答

5

沒有,String.IsNullOrEmpty是多餘的,因爲在這裏通過Int32.TryParse返回false處理這種情況。因此,這是更簡潔:

int result; 
if (int.TryParse(item, out result)) 
{ 
    //do stuff 
} 

MSDN:

如果s參數爲空或的String.Empty的轉換失敗,不是 正確的格式,或代表一個數字少MinValue 或大於MaxValue。

1

Int.TryParse會返回一個布爾(true如果成功),所以你可以寫:

string item = null; //or a value 
int result; 
if (int.TryParse(item, out result)) 
{ 
    //do stuff 
} 
1

如果您使用.TryParse進行轉換,則無需檢查空或空。由於如果轉換失敗,返回值將是錯誤的。因此,它是安全的,使用這樣的:

string item = null; //or a value 
int result; 
if(int.TryParse(item, out result)) 
{ 
    //do stuff 
} 
else 
{ 
    // you can show conversion failure message here 
    // or can proceed with value 0 
} 

附加說明:如果您正在處理使用int.Parse轉換那麼這將是偉大的,因爲null原因ArgumentNullException和空字符串原因檢查string.IsNullOrEmptyFormatException