C#动态类型比较导致异常NotSupportedException

时间:2011-11-24 15:50:51

标签: c# exception dynamic

在下面的代码中,在对动态类型执行比较时会引发异常。注意我已启用VS2010中的所有异常(在Debug-> Exceptions下)。触发的异常是“Common Language Runtime Exceptions”下的“System.NotSupportedException”。如果我在此异常后继续或将其关闭,则代码可以正常运行。

1)并非所有异常都是坏的并且应该解决(不被忽视)?

2)其他人是否在Visual Studio中打开所有异常中断?

3)在“MyMethod(0)”情况下,“value”在运行时解析为int。我相信将“value”与null进行比较是好的,即使int不是引用类型。是因为值仍然是真正的动态类型(非常类似于对象),它是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
}

2 个答案:

答案 0 :(得分:0)

虽然我无法重现您的问题,但是FWIW null是一种特殊的值类型而不是参考类型。

答案 1 :(得分:0)

我已经尝试过您的代码或类似的东西,并没有得到异常。我有

异常是否可能来自您未展示的内容({...})?