C# var和dynamic的用法和理解

原创 2016年08月31日 14:55:47

var和dynamic的本质区别是类型判断的时间不同,前者是编译时,后者是运行时。


1.var在声明变量方面简化语法(只能是局部变量),在编译时交给编译器推断。


2.dynamic也是为简化语法而生的,它的类型推断是交给系统来执行的(运行时推断类型)。


3.var不能用于字段、参数等,而dynamic则可以。


4.var在初始化的时候就确定了类型。


5.dynamic可以用于方法字段、参数、返回值以及泛型参数,把动态发挥的淋漓尽致。


6.dynamic在反射方面做的可以,只是我自己没有尝试过。


7.var是C# 3.0的产物,dynamic是C# 4.0的产物。


最后还得关心一下效率问题:
越底层的效率越高
可以说是 传统强类型 >= var > dynamic,所以用dynamic的时候还得考虑性能和效率!


版权声明:本文为博主原创文章,未经博主允许不得转载,如果转载请写明出处。

C#中的Object、Dynamic与var的区别

让我们快速看看object关键字先。我不会对它讲太多,因为它在C#1.0就已经有了。这个关键字没有更多东西除了作为System.Object的快捷方式,System.Object是C#类层次的根类型。...
  • stuqbx
  • stuqbx
  • 2011年12月06日 13:39
  • 3769

C#高级编程七十天----dynamic类型

dynamic类型 C#新增了dynamic关键字,正是因为这一个小小的关键字,C#像前迈进了一大步. dynamic是一个类型关键,声明为dynamic的类型与”静态类型”(这里的静态是指编译时...
  • shanyongxu
  • shanyongxu
  • 2015年08月05日 13:48
  • 2390

C#中的dynamic类型

dynamic是FrameWork4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性。比如,即使你...
  • colin788
  • colin788
  • 2015年01月30日 10:19
  • 550

C#反射对象(C# Dynamic)

我觉的此方法是很有用的,尤其是你想把很多数据的对象读取到内存是,省你的很多时间和精力。 我用的时候是直接用泛型,然后就在一个getDataList()方法里就解析(反射)我的T对象,然后赋给从数据库...
  • ilyasjan
  • ilyasjan
  • 2014年11月25日 16:06
  • 144

C#动态对象(dynamic)示例(实现方法和属性的动态)

C#的动态对象的属性实现比较简单,如果要实现动态语言那种动态方法就比较困难,因为对于dynamic对象,扩展方法,匿名方法都是不能用直接的,这里还是利用对象和委托来模拟这种动态方法的实现,看起来有点j...
  • hawksoft
  • hawksoft
  • 2012年05月04日 12:19
  • 29889

C#高级编程七十二天----DynamicObject和ExpandoObject

DynamicObject和ExpandoObject 1.ExpandoObject表示一个对象,该对象包含可在运行时动态添加和移除的成员.这个类和动态类型有关,这个类能做些什么? 案例:  ...
  • shanyongxu
  • shanyongxu
  • 2015年08月05日 17:03
  • 4325

[C#] 谨慎使用DynamicInvoke

Delegate类提供了一个变参接口DynamicInvoke(params object[] args),可以在委托的具体类型不可知的情况下通过反射来进行委托调用。很方便,但由于变参,而且使用了反射...
  • lijing_hi
  • lijing_hi
  • 2013年09月22日 09:34
  • 3781

dynamic基础类型/C#与动态脚本语言交互/dynamic自定义类型

ruby python js动态语言有他们自身的优点,因此C#中的var关键字和匿名方法开辟了C#的动态编程路径,.net 4中增加了dynamic类型。 DLR(dynamic language ...
  • Blues1021
  • Blues1021
  • 2015年10月10日 10:58
  • 1835

【C#4.0】dynamic和var及object

dynamic a = 10;a = a + 10;Console.WriteLine(a.GetType()); 此段代码会输出 System.Int32,第二行不需要类型转换,因为在运行时识别类...
  • IT_xiaohong
  • IT_xiaohong
  • 2012年02月10日 16:59
  • 3715

【C#dynamic 类型】

在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查,改为在运行时解析这些操作。 dynamic 类型简化了对 COM API(例如 Office Automation API)...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016年04月19日 15:05
  • 2632
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# var和dynamic的用法和理解
举报原因:
原因补充:

(最多只允许输入30个字)