.net framework推出var关键字,注意是关键字,不是什么新类型,只是编译器抛给我们的“语法糖”

1object是所有类型的父类型,object
a=1;和var a=1;的区别在于前一个需要装箱,耗资源时间,后一个的效率和使用强类型定义变量一样

2var的由来,可能是linq的语法,经常会返回一些只有编译器才能动态决定的类型,于是推出var,由编译器根据右边表达式去动态决定变量类型,这和常规强类型不一样,如string a=”yhc”;首先必须决定a的类型,才能给他赋什么类型的值

3很多时候,有的表达式返回类型着实让人蛋疼,干脆直接var,比如集合的扩展方法GroupByILookup

返回类型如此复杂,对于用的少的我来说,的确蛋疼,干脆直接var

4var不能作为全局变量,只能局部,不能作为方法的参数类型和返回类型,声明时必须赋值初始化,并且初始化后,具有强类型性质,不能再赋值其他类型的值,并且右边不能是null类型,因为编译器无法根据null类型推测出局部变量的类型。

同时,不要拿var和dynamic比较,一个是关键字一个是类型,有比较性吗?但是区别还是有的,dynamic本质上是object,只不过在编译时特殊处理,不去判断类型的转换能否等类型检查问题,而是在运行时去确定类型,

从我们var
a=1; 把鼠标放在var上,智能感知能读出var为int类型,而dynamic则提示“此操作将在运行时解析”

最新文章

  1. IE中的条件注释(转载自网络)
  2. SQL2008关于quotename的用法
  3. @section Right
  4. 【面试虐菜】—— Oracle中CHAR、VARCHAR的区别
  5. Bzoj 2241: [SDOI2011]打地鼠 暴力,枚举,贪心
  6. hadoop mapreduce 端参数优化
  7. fastcgi_param 详解
  8. scala和maven整合实践
  9. [转]Python爬虫框架--pyspider初体验
  10. JDK 源码学习——ByteBuffer
  11. nodejs的package.json依赖dependencies中 ^ 和 ~ 的区别
  12. JDBC 连接池的两种方式——dbcp & c3p0
  13. PJSUA2开发文档--第十二章 PJSUA2 API 参考手册
  14. Qt4.8.6开发WinCE 5.0环境搭建
  15. themeleaf跳转锚链接
  16. MySQL MySql连接数与线程池
  17. Ethereum HD Wallet(虚拟货币钱包)-BIP32、BIP39、BIP44
  18. Linux命令 uname:查看系统与内核相关信息
  19. 【BZOJ1004】[HNOI2008]Cards Burnside引理
  20. yum localinstall 安装mysql8.0

热门文章

  1. Solr集群安装
  2. react layout init
  3. CBP是什么?
  4. Matlab批量读取文件夹文件
  5. Go语言使用匿名结构体解析JSON数据
  6. 一次不成功的脚本Hack[捕鱼达人游戏]
  7. datetimefield和datefield的区别
  8. AUL恢复truncate删除的表
  9. oscache使用经历
  10. php end()