【发布时间】:2011-11-25 00:27:11
【问题描述】:
在下面的代码中,对动态类型执行比较时会引发异常。注意我已经为 VS2010 中的所有异常启用中断(在 Debug->Exceptions 下)。触发的异常是“公共语言运行时异常”下的“System.NotSupportedException”。如果我在此异常后继续或将其关闭,则代码将正常运行。
1) 不是所有的异常都是不好的,应该解决(不忽略)吗?
2) 其他人是否在 Visual Studio 中打开所有异常中断?
3) 在“MyMethod(0)”情况下,“值”在运行时解析为 int。我相信即使 int 不是引用类型,也可以将“值”与 null 进行比较。是不是因为 value 在下面仍然是真正的动态类型(与 object 非常相似),它是 ref 类型。因此,除了动态类型的特性(即空值比较)之外,动态还具有其运行时评估类型(即 value++)的所有能力。
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
}
【问题讨论】:
-
无复制。检查您的代码 sn-p。