我發現.NET 4.0/VS 2010中TryCast的這種行爲相當混亂。TryCast在DirectCast工作的地方失敗(.NET 4.0)
在我的理解中,TryCast的工作方式與DirectCast類似,但如果不能投射,將返回Nothing而不是拋出異常。
VS 2010/.NET 4
?TryCast(CType(1, Object), String)
Nothing
?DirectCast(CType(1, Object), String)
"1"
VS 2008/.NET 3.5
?TryCast(CType(1, Object), String)
Nothing
?DirectCast(CType(1, Object), String)
Cannot convert to 'String'.
的.NET 3.5的結果是什麼,我相信TryCast確實一致...但是.NET 4不是。
有人可以請指出我最好的方向安全地將對象轉換爲.NET 4中的字符串嗎?
我剛剛證實你的建議。 DirectCast()確實在實際評估中運行時會引發異常。感謝您的澄清! – motto 2010-08-19 16:00:38
如果你能解釋到底發生了什麼,那將是非常整潔的。 – SLaks 2010-08-19 16:02:52
@SLaks,添加了一個快速解釋。 – JaredPar 2010-08-19 16:12:28