风の社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5269|回复: 0
打印 上一主题 下一主题

[C#] c#中var和dynamic关键字

[复制链接]

449

主题

0

听众

1995

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    开心
    2012-9-12 10:03
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    楼主
    发表于 2013-3-6 16:39:43 |只看该作者 |倒序浏览
    • 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会比反射快(因为缓存)
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    转播转播0 分享分享0 收藏收藏0 支持支持0 反对反对0
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    Archiver|手机版|迦南的天空 ( 沪ICP备12037486号-1

    GMT+8, 2024-5-19 01:43 , Processed in 0.014390 second(s), 10 queries , Gzip On, Redis On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部