c# 类型化变量的var,和javascript一样的使用
2024-09-04 16:26:12
.net framework推出var关键字,注意是关键字,不是什么新类型,只是编译器抛给我们的“语法糖”
1、object是所有类型的父类型,object
a=1;和var a=1;的区别在于前一个需要装箱,耗资源时间,后一个的效率和使用强类型定义变量一样
2、var的由来,可能是linq的语法,经常会返回一些只有编译器才能动态决定的类型,于是推出var,由编译器根据右边表达式去动态决定变量类型,这和常规强类型不一样,如string a=”yhc”;首先必须决定a的类型,才能给他赋什么类型的值
3、很多时候,有的表达式返回类型着实让人蛋疼,干脆直接var,比如集合的扩展方法GroupBy、ILookup
返回类型如此复杂,对于用的少的我来说,的确蛋疼,干脆直接var
4、var不能作为全局变量,只能局部,不能作为方法的参数类型和返回类型,声明时必须赋值初始化,并且初始化后,具有强类型性质,不能再赋值其他类型的值,并且右边不能是null类型,因为编译器无法根据null类型推测出局部变量的类型。
同时,不要拿var和dynamic比较,一个是关键字一个是类型,有比较性吗?但是区别还是有的,dynamic本质上是object,只不过在编译时特殊处理,不去判断类型的转换能否等类型检查问题,而是在运行时去确定类型,
从我们var
a=1; 把鼠标放在var上,智能感知能读出var为int类型,而dynamic则提示“此操作将在运行时解析”
最新文章
- IE中的条件注释(转载自网络)
- SQL2008关于quotename的用法
- @section Right
- 【面试虐菜】—— Oracle中CHAR、VARCHAR的区别
- Bzoj 2241: [SDOI2011]打地鼠 暴力,枚举,贪心
- hadoop mapreduce 端参数优化
- fastcgi_param 详解
- scala和maven整合实践
- [转]Python爬虫框架--pyspider初体验
- JDK 源码学习——ByteBuffer
- nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别
- JDBC 连接池的两种方式——dbcp &; c3p0
- PJSUA2开发文档--第十二章 PJSUA2 API 参考手册
- Qt4.8.6开发WinCE 5.0环境搭建
- themeleaf跳转锚链接
- MySQL MySql连接数与线程池
- Ethereum HD Wallet(虚拟货币钱包)-BIP32、BIP39、BIP44
- Linux命令 uname:查看系统与内核相关信息
- 【BZOJ1004】[HNOI2008]Cards Burnside引理
- yum localinstall 安装mysql8.0