.Net框架包含一個名爲Convert的優秀類,它允許在簡單類型,DateTime類型和String類型之間進行轉換。此外,該類還支持實現IConvertible接口類型的轉換。將字符串轉換爲簡單類型
該類已經在.Net框架的第一個版本中實現。第一個.Net框架中有幾件事情做得不對。例如,對於簡單類型的Parse方法,如果字符串不能被解析,並且沒有辦法檢查異常是否會被提前拋出,則會拋出異常。
.Net Framework的未來版本通過引入解決此問題的TryParse方法消除了此缺陷。
Convert類的歷史可以追溯到舊的Parse方法的時間,因此該類中的ChangeType方法已實現舊樣式 - 如果無法執行轉換,則會拋出異常。
看看下面的代碼:
public static T ConvertString<T>(string s, T @default)
{
try
{
return (T)Convert.ChangeType(s, typeof(T), CultureInfo.InvariantCulture);
}
catch (Exception)
{
return @default;
}
}
此代碼基本上我想要做什麼。不過,我很想避免這裏的醜陋嘗試。我相信,與TryParse類似,有一種現代的方法來重寫這些代碼,而不是全部。你能建議一個嗎?
如果使用try/catch,如果它只會很少發生,例如,如果某些格式錯誤,那麼不會感到羞恥。這就是如果你在大部分時間遇到性能問題都會觸發該問題。 – Chris 2010-05-21 03:57:46
是的,這將是我想避免它的另一個原因。有時候很難預測代碼的使用/調用方式和位置,因此您希望「正確」執行代碼。 – 2010-05-21 03:59:28