我有許多字符串被解析爲整數值的代碼。int.TryParse之前的空值檢查
string item = null; //or a value
int result;
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result))
{
//do stuff
}
是否真的需要每次檢查IsNullOrEmpty
?如果它是null
或爲空,解析應該失敗。
我有許多字符串被解析爲整數值的代碼。int.TryParse之前的空值檢查
string item = null; //or a value
int result;
if (!string.IsNullOrEmpty(item) && int.TryParse(item, out result))
{
//do stuff
}
是否真的需要每次檢查IsNullOrEmpty
?如果它是null
或爲空,解析應該失敗。
沒有,String.IsNullOrEmpty
是多餘的,因爲在這裏通過Int32.TryParse
返回false
處理這種情況。因此,這是更簡潔:
int result;
if (int.TryParse(item, out result))
{
//do stuff
}
MSDN:
如果s參數爲空或的String.Empty的轉換失敗,不是 正確的格式,或代表一個數字少MinValue 或大於MaxValue。
Int.TryParse
會返回一個布爾(true
如果成功),所以你可以寫:
string item = null; //or a value
int result;
if (int.TryParse(item, out result))
{
//do stuff
}
如果您使用.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.IsNullOrEmpty
FormatException
你可以在問之前自己測試一下。不,這不是必需的。那麼'TryParse'返回'false'。如果嘗試解析失敗, –
結果將爲0。 –
@TimSchmelter可以這樣做,但是這種機械特魯克方法可以爲這個問題提供即燃即用的解決方案。花同樣的時間來創建一個簡單的問題,一起吃午飯,回來的答案 - 有描述這種現象的幾句話,但他們;-) –