2011-11-24 90 views
0

在下面的代碼中,在對動態類型執行比較時引發異常。注意我已經打開了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 
} 
+0

無重放。檢查你的代碼片段。 –

回答

0

雖然我無法重現你的問題,FWIW,null是一種特殊的值類型不是引用類型。

0

我試過你的代碼或類似的東西,沒有得到異常。我有

是否有可能發生異常來自您未顯示的內容({...})?

+0

這個問題似乎是我的日誌記錄系統Gilbraltar(類似於NLog)。由於某種原因,當這個日誌系統啓動時,它以某種方式間接導致任何未來的動態語句比較產生NotSupportException異常(非常棘手)。在意識到其他人沒有看到異常之後,我只能通過嘗試一個錯誤來檢測到這種間接的腐蝕。如果我能找到潛在的問題,我會再次發佈。 – aidesigner

相關問題