簡體   English   中英

Convert.ChangeType() 對字符串值有意義嗎?

[英]Does Convert.ChangeType() makes sense with a string value?

我發現了@hugoware關於解析值的這篇很棒的帖子: http://hugoware.net/blog/more-control-when-parsing-values 我在一個項目中重新使用了他的代碼示例,但現在我注意到在最后一個塊(他的代碼的第 154 行)中,他使用 Convert.ChangeType() 方法作為“轉換”值的最后一次嘗試。

現在我想知道這是否有意義,因為我們總是從字符串值開始,我猜 Convert.ChangeType 只對值類型進行強制轉換? 嘗試這樣做有意義還是總是會失敗?

如果您只想轉換字符串,我建議您使用ConvertToString / ConvertFromString

 TypeConverter converter = TypeDescriptor.GetConverter(type);
 string res = converter.ConvertToString(obj);
 object original = converter.ConvertFromString(res);

--

您可以將 Convert.ChangeType() 與字符串一起使用。 請參閱 MSDN 文檔: ChangeType

來自 MSDN:

string s = "12/12/98";
DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime));

在上述情況下,從字符串轉換是有意義的。

通過使用這種方法,我想可以進一步擴展它以處理非字符串值,例如

private static bool _PerformConvert<T,U>( U value, ref T result )
{
    object convert = Convert.ChangeType(value, typeof(U) );
    // Continue ...
}

例如,如果您有一個與第三方 dll 的接口,該接口提供了 object 的數字表示(它已經發生),那么能夠從任何值進行轉換可能是有意義的。您可以使用更通用的代碼版本在第 3 方表示和對您的代碼更有意義的另一種表示之間進行轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM