上述在编译时是不会报错的,但是在运行时,执行第二句是没问题的,因为得到的 dynamicObject 对象是有 Name ,Gender 两个属性的,但是执行第三句时就会抛出异常 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException ,并提示 does not contain a definition for 'GetAge'。
dynamic 与 var
有时候会将 var 关键字与 dynamic 进行对比,那么我觉得主要有以下几点:
var 用于在编译时推断变量类型,可以将其视为一种简写方式,将变量类型的声明推迟到编译时。而 dynamic 则是一种在运行时动态确定对象类型的类型。它允许您在运行时调用对象的属性和方法,而不需要在编译时确定对象的确切类型。