2009-08-21 188 views
2

今天我讀了一篇文章,寫道我們應該總是使用TryParse(string,out MMM)進行轉換,而不是Convert.ToMMM()。c#:tryparse vs convert

我同意文章,但之後我陷入了一種情況?

當總會有一些有效的字符串值,因此我們也可以使用Convert.ToMMM(),因爲我們沒有從Covert.ToMMM()中得到任何異常。

這裏我想知道的是:當我們使用TryParse時會有什麼性能影響,因爲當我知道out參數總是有效的時候,我們可以使用Convert.ToMMM()而不是TryParse(string, out MMM)

你覺得呢?

回答

9

如果你知道的值可以轉化,只需使用Parse()。如果你「知道」它可以被轉換,而它不能,那麼被拋出的異常是件好事。

編輯:請注意,這是與使用TryParseConvert比較沒有錯誤檢查。如果您使用其他方法進行適當的錯誤檢查,那麼該點是沒有意義的。我只是擔心你的假設,你知道的值可以轉換。如果您想跳過錯誤檢查,請使用Parse並在發生故障時立即死亡,而不是繼續並破壞數據。

1

當輸入TryParse/Convert.ToXXX來自用戶輸入時,我總是使用TryParse。在數據庫值的情況下,我會檢查你爲什麼從數據庫中獲得string(可能是壞的設計?)。如果字符串值可以在數據庫列中輸入,我也會使用TryParse,因爲您永遠無法確定沒有人手動修改數據。

編輯
讀馬修的答覆:如果您不確定,反正想包在一個try-catch塊的轉換,你可以考慮使用TryParse,因爲它被認爲是比做一個try-catch方式更快在這種情況下。

0

您使用的開發方法有顯着差異。

轉換:在轉換一個「原始」數據爲另一種類型,並使用多個選項
案與點對應的格式 - 由位表示轉換到其位的整數。或十六進制數字(以字符串形式)整數等...
錯誤消息:轉換特定錯誤消息 - 針對多個情況下以及多個轉換過程中的問題。

TryParse:從一種數據格式到另一種數據格式的無錯誤傳輸。啓用可能與否的T/F控制。
錯誤消息: NONE
NB:即使傳遞數據給一個變量之後 - 傳遞的數據是我們嘗試解析該類型的默認

解析:在本質上採取一些數據在一個格式,在轉移到另一個。沒有表示,沒有什麼幻想。
錯誤消息:面向格式

P.S.糾正我,如果我錯過了什麼或沒有解釋得好。