zoukankan      html  css  js  c++  java
  • c# 类型化变量的var,和javascript一样的使用

    .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则提示“此操作将在运行时解析”

  • 相关阅读:
    php文件下载原理
    spring源码@configuration&@bean
    解决java在idea运行正常,但是打成jar包后中文乱码问题
    IntelliJ IDEA查看堆内存和类继承关系
    jenkins无法展示报告
    解决windows(slave)导致linux(master)输出乱码
    UIRECODER安装记录
    vue项目前后端部署
    django orm
    django笔记
  • 原文地址:https://www.cnblogs.com/yinhaichao/p/3357392.html
Copyright © 2011-2022 走看看