木子屋 Dnawo's BLOG

C#4.0中var和dynamic的区别

👤 dnawo 📅 2013-08-06 👁 3276 👍 0 💬 0 🔄 本站原创
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)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 QQ邮箱英文邮箱帐号注销及注册 下一篇 → MSSQL使用update join更新记录示例