在.Net中,您可以使用<datatype>.parse
或Convert.To<DataType>
將字符串值讀入另一種數據類型。.Net解析與轉換
我並不熟悉解析和轉換的基本原理,所以當被問及哪一個更好/更快/更合適時,我總是處於虧損狀態。
那麼 - 在哪種情況下哪種方式最好?
在.Net中,您可以使用<datatype>.parse
或Convert.To<DataType>
將字符串值讀入另一種數據類型。.Net解析與轉換
我並不熟悉解析和轉換的基本原理,所以當被問及哪一個更好/更快/更合適時,我總是處於虧損狀態。
那麼 - 在哪種情況下哪種方式最好?
的Convert.ToXXX()
方法是,可能是正確的或相似類型的對象,而.Parse()
和.TryParse()
是專門爲字符串:
//o is actually a boxed int
object o = 12345;
//unboxes it
int castVal = (int) 12345;
//o is a boxed enum
object o = MyEnum.ValueA;
//this will get the underlying int of ValueA
int convVal = Convert.ToInt32(o);
//now we have a string
string s = "12345";
//this will throw an exception if s can't be parsed
int parseVal = int.Parse(s);
//alternatively:
int tryVal;
if(int.TryParse(s, out tryVal)) {
//do something with tryVal
}
如果用優化標誌的TryParse編譯非常快 - 這是最好的從字符串中獲取數字的方法。但是,如果您有一個對象可能是一個int或可能是一個字符串Convert.ToInt32更快。
這裏是爲你找出答案:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=77428
雖然我覺得在.NET的現代版本,做的最好的事情是在任何情況下使用的TryParse,如果有任何疑問,轉換將工作。
還有DirectCast方法,只有在您確定該對象的類型時才應使用該方法。它速度更快,但沒有做適當的檢查。當我知道每列的類型時,我從鬆散類型的DataTable中提取值時使用DirectCast。
如果你需要速度,我敢肯定直接投射是最快的方法。這就是說,我通常使用.Parse或.TryParse,因爲它似乎使事情變得更容易閱讀,並且以更可預測的方式行事。
轉換實際上是調用解析引擎蓋,我相信。所以這裏幾乎沒有什麼區別,而且它似乎只是個人品味的問題。
我是TryParse的忠實粉絲,因爲它可以爲您節省很多頭痛的錯誤捕捉,當有可能您要分析的值不是合適的類型。
我的訂單通常是: