c# 类型化变量的var,和javascript一样的使用
.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则提示“此操作将在运行时解析”
分类:
C#基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?