dynamic关键字
以下分配形式的区别
1.var a = new List(强类型,初次赋值之后a的类型就是List)
2.object a = new List(强类型,可以分配各种类型,但是要访问属性时,需要强制转换)
3.dynamic a = new List(不是强类型,可以分配任何类型,可以在其生命周期内重新分配新的值)
使用动态类型注意点
使用动态类型时,编译器不会检查指定成员的有效性(如s.toupper()),所以要保证拼写的准确。
var不能用于返回值,参数或类/结构的成员,但是动态类型都可以。
调用动态数据的方法时,不能使用Lambda表达式和c#匿名方法。
动态类型常用于反射
将之前的反射改为使用动态类型:
Type miniVan = asm.GetType(“CarLibrary.MiniVan”);
dynamic obj = Activator.GetInstance(miniVan);
obj.TurboBoost();
(省略了使用GetMethod获取方法,Invoke调用方法的步骤)