C#4.0中var和dynamic的区别

var变量的类型是在编译时决定的,它使用隐式声明来声明一个变量,编译器会根据右值来推断出变量的类型。var只能用于局部变量的定义,不能作为属性、字段、索引器、参数、返回值或类型约束的类型。

dynamic变量的类型是在运行时决定的,dynamic告诉编译器,根本就别理究竟是啥类型,运行时再推断不迟,dynamic类型并没有跳过类型校验,只是延迟到了运行时。如果在运行时,检测到类型不兼容,照样会抛出异常。dynamic可以作为属性、字段、索引器、参数、返回值或类型约束的类型。

个人建议:

单纯从使用上看,dynamic完全可以代替var,但个人建议能使用var的场合尽量使用var,这样一些错误在编译时就能排除,使用不了var的场合(属性、字段、索引器、参数、返回值或类型约束的类型),才使用dynamic。


参考资料

[1].var(C# 参考):http://msdn.microsoft.com/zh-cn/library/bb383973.aspx
[2].dynamic(C# 参考):http://msdn.microsoft.com/zh-cn/library/dd264741.aspx
[3].C#4.0中var和dynamic的区别:http://hy2008goodluck.blog.163.com/blog/static/88407247201144571755/

评论: 0 | 引用: 0 | 查看次数: 2553
发表评论
登录后再发表评论!