在Visual C# 2010中引入了一种新的dynamic类型,该类型是一个静态的(static)类型,但是一个 dynamic类型的对象会绕过静态类型检查。在大多数情况下dynamic和object类型有些相似,但是在编译时 ,dynamic类型被假定为支持任何操作,也就是说dynamic类型的对象可以是一个Office对象,可以是一个 COM对象或者是DOM对象,而如果在运行时发现该对象不是期望的对象则会抛出一个运行时异常。
由于把一个对象定义为dynamic类型,因此在代码中编写任意调用在编译时都是合法的(这一点在声明 为object类型时不能成立)。例如以下代码能够通过编译:
运行后发现obj并不支持UpdateWordDocument方法,因此会抛出异常:
大多数动态类型操作的结果仍是动态类型,例如编写如下代码时智能提示会显示变量的类型是dynamic :
时间: 2024-10-03 13:24:19