【发布时间】:2010-10-01 05:32:57
【问题描述】:
在他的 PDC 演讲中,Anders 说 dynamic 关键字将调度在运行时对其进行的任何函数调用。
他接着说“动态”关键字本身是在编译时进行静态类型检查的。
现在,如果您要调用“动态”类型上不存在的方法 - 这不会导致运行时错误吗?
将C# 4.0语言称为静态类型检查语言是否正确?
或者我只是不明白安德烈斯在这个演示文稿中所说的内容?
【问题讨论】:
在他的 PDC 演讲中,Anders 说 dynamic 关键字将调度在运行时对其进行的任何函数调用。
他接着说“动态”关键字本身是在编译时进行静态类型检查的。
现在,如果您要调用“动态”类型上不存在的方法 - 这不会导致运行时错误吗?
将C# 4.0语言称为静态类型检查语言是否正确?
或者我只是不明白安德烈斯在这个演示文稿中所说的内容?
【问题讨论】:
C# 仍然有静态类型检查,但是说引用的静态类型是“动态的”有点好笑。 IIRC 动态的实际类型是对象,带有一个特殊的 IL 标志来指示它是动态解析的。当然,如果实际类型不支持给定的操作,则会引发异常。
【讨论】: