.NET中dynamic和var的区别
类别:编程学习 浏览量:913
时间:2015-12-2 .NET中dynamic和var的区别
.NET中dynamic和var的区别1、dynamic与var具有截然不同的含义
var表示“变量的类型是在编译时决定的”,但是dynamic表示“变量的类型是在运行时决定的”。
2、var编译时替换为实际类型,而dynamic实际是object类型
一旦被编译,编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明,这看上去就好像我们在编码的时候是用实际类型进行申明的。而dynamic被编译后,实际是一个object类型,只不过编译器会对dynamic类型进行特殊处理,让它在编译期间不进行任何的类型检查,而是将类型检查放到了运行期。
3、智能感知
以var声明的变量,支持“智能感知”,因为visual studion能推断出var类型的实际类型,而以dynamic声明的变量却不支持“智能感知”,因为编译器对其运行期的类型一无所知。对dynamic变量使用“智能感知”,会提示“此操作将在运行时解析”。
4、var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参 数类型定义成var。dynamic就没有这些局限了。
5、表达式不能转型为var,但能转型为dynamic。
6、必须显式初始化用var声明的变量,但无需初始化用dynam声明的变量。
7、dynamic类型并没有跳过类型校验,只是 延迟到了运行时。如果在运行时,检测到类型不兼容,照样会抛出异常。
热门推荐
- asp.net 消息队列
- apache https配置(Apache httpd 安装module mod_expires、mod_deflate的方法)
- navicat连接mysql报错(解决Navicat Premium 连接 MySQL 8.0 报错"1251"的问题分析)
- python中读取文件怎么操作(Python实现的读取文件内容并写入其他文件操作示例)
- mysql根据子节点查询父节点(mysql 递归查找菜单节点的所有子节点的方法)
- react自适应布局如何实现(React实现分页效果)
- sql行转列的应用(SQL查询语句行转列横向显示实例解析)
- python字符串找一个最大字符(Python查找最长不包含重复字符的子字符串算法示例)
- vue封装一个功能函数(vue中利用mqtt服务端实现即时通讯的步骤记录)
- centos搭建sftp服务器(Linux云服务器搭建SFTP服务器图片服务器的操作)