今天和大家分享一下這個小細節
"23.00"可以轉換成int嗎?
在C# 中想要將String類型轉換成int時有以下幾種方法:
int.TryParse;
Convert.Toint32;
(int)string;
在遇到一下特殊的情況下就會轉換失敗,比如今天說的"23.00",這種情況就會出現以下情況:
使用Convert.ToInt32(string) 會出現輸入字符串格式錯誤問題。
使用Int.TryParse(string)也會轉換失敗,不會錯誤,會輸出默認的0
解決方案是必須使用Decimal或者Double去轉換,以後看到這個千萬別傻傻的使用int去轉換。例如
使用Decimal.Parse
string a = "23.00";
decimal c = decimal.Parse(a);
Console.WriteLine("result:{0}", (int)c);
//result:23
使用Double.Parse
string a = "23.00";
Double c = Double.Parse(a);
Console.WriteLine("result:{0}", (int)c);
//result:23
如果你怕出現異常可以使用TryParse,或者使用自己的定義的擴展方法去實現這個轉換,但一定要注意記得使用哦。
注意點:當你使用(int)string強行轉換的時候你會發現如果帶有小數點系統會被自動忽略。
如果你使用Convert.ToInt32轉換時系統會四捨五入。
附:如何實現一個類型的擴展類呢。
必須是一個靜態類
將該擴展方法實現為靜態方法,並使其至少具有與包含類相同的可見性。
該參數必須以 this 修飾符開頭
示例:
public static class ObjectExtension
{
public static int ToInt(this object obj)
{
int result = default(int);
if (obj != null && obj != DBNull.Value)
{
int.TryParse(obj.ToString(), out result);
}
return result;
}
}
好了快去試試吧