[英]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.