在下面的代碼中,在對動態類型執行比較時引發異常。注意我已經打開了VS2010中的所有異常(在Debug-> Exceptions下)。正在觸發的異常是「公共語言運行時異常」下的「System.NotSupportedException」。如果我在此異常之後繼續或將其關閉,代碼將正確運行。C#動態類型比較導致異常NotSupportedException
1)是不是所有例外都不好,應該解決(不忽略)?
2)其他人都打開Visual Studio中的所有異常中斷嗎?
3)在「MyMethod(0)」情況下,「值」在運行時解析爲int。即使int不是引用類型,我相信將「value」與null比較也可以。這是因爲值仍然是真正的動態類型(非常類似於對象),它是ref類型。因此,除了動態類型的特徵(即,空比較)之外,動態特性將具有其運行時評估類型(即值++)的所有能力。
MyMethod(0); // Causes problems (value runtime type is int)
MyMethod(null); // Causes problems (value runtime type is ref?)
public dynamic MyMethod(dynamic value)
{
if (value != null) {...}// Throws NotSupportedExpception
if (value != 0) {...} // Throws NotSupportedExpception
}
無重放。檢查你的代碼片段。 –