- 注册时间
- 2012-7-10
- 最后登录
- 2017-4-1
- 阅读权限
- 200
- 积分
- 1995
- 精华
- 0
- 帖子
- 460
TA的每日心情 | 开心 2012-9-12 10:03 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
- var是一种推断类型
- 类型在编译成IL时就确定就确定类型
- var a=5, int32 a=5;var b=“abc”,String b=“abc”
- 有时候不的不用var,象匿名类型,Linq中(部分)
- var user = new { Name = “zhou”, Age = 10 };至于user我们不知道类型,但编译器知道,它会生成一个类,名字类似AnonymousType什么什么
- Var不会带来性能影响,因为在第一次编译时就确定了类型,运行时已经有明确的类型
- 如果声明var list=GetList(),虽然不会出错,但不利用易读性一眼看不出返回的类型,看情况而用
- Var不能用在返回值,参数,和声明全局变量中
- Dynamic和var截然不同,var在编译时确定类型,前者在运行时确定类型,可以作返回值,参数类型等
- Dynamic是提供动态编程的核心,很多行为和object相似,有人说是对object 封装(其实就是object),使用dynamic编译器会生成很多辅助代码
- VS对dynamic无法智能提示和判断,异常只有在运行时才能抛出
- Dynamic大简化了反射调用,直接可以用对象调用属性,如obj.XX,XX可以是方法也可以是属性,等等。
- 不到必要时不要用dynamic,代价比较 大,反射时可以用,某些情况 下dynamic会比反射快(因为缓存)
|
|