第四天 - 动态类型 笔记

C#动态类型(dynamic)使用解析
本文主要介绍C#中dynamic关键字,对比了var、object和dynamic三种分配形式的区别,指出dynamic不是强类型,可分配任何类型且能重新赋值。还阐述了使用动态类型的注意点,如编译器不检查成员有效性、不能用Lambda表达式等,且动态类型常用于反射。

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调用方法的步骤)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值