C#中的var究竟是强类型还是弱类型?

前言

在C#中,var关键字是用来声明变量类型的,它是C# 3.0推出的新特征,它允许编译器根据初始化表达式推断变量类型,有点跟javascript类似,而javascript中的var是弱类型。它让C#变量声明更加简洁,但也导致了一些关于C#是强类型还是弱类型的争论。

解析

在传统意义上,强类型语言要求变量在声明时必须指定类型,而弱类型语言则允许变量没有指定类型。在C#中,var关键字可以用于声明没有指定类型的变量,看着C#仿佛是弱类型语言。

然而,C#其实是强类型语言,因为编译器会在编译期间对变量类型进行检查。如果变量初始化表达式类型不匹配,编译器将会报错。因此,C#中的var关键字不是js的任意类型,而是允许编译器根据初始化表达式推断变量类型。

案例

我们可以通过反编译var的中间语言来看到底是什么样的类型。大家看看下面的案例。

1、 首先建一个新的.NET 6控制台项目。在分别建4个不同类型的var变量。生成一下并运行是否正常。最后用反编译软件ILspy查看刚才生成的dll文件。如下图

2、打开dll文件依次找到Program中的mian函数。我们可以看到,var消失了,说明它们已经在编译时推断出变量类型。

3、我们切换成IL中间语言,结果也未发现var关键字。从反编译的结果来说,var它属于强类型,通过编译推断出初始化的变量类型。

那么作为静态语言的C#为啥会引入var呢?

这还得从LINQ,linq可以在各种IEnumerable类型上做筛选、变换等类似SQL的操作,这样就简化了强类型的操作复杂度,不同的操作返回的类型有的比较复杂,如果每次都写出类型代码就显得比较繁琐,这种情况下就推出了var关键字语法糖。

结语

本文讲述了var是强类型还是弱类型,并用案例证明了var是强类型。大家觉得var是强类型还是弱类型呢?欢迎留言讨论。

1、面试官:C#的var和dynamic关键字,你能说清楚吗?

2、C# 作为一种静态类型语言,为什么会引入var?

来源公众号:DotNet开发跳槽

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/205540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pytorch】Visualization of Fature Maps(2)

学习参考来自 使用CNN在MNIST上实现简单的攻击样本https://github.com/wmn7/ML_Practice/blob/master/2019_06_03/CNN_MNIST%E5%8F%AF%E8%A7%86%E5%8C%96.ipynb 文章目录 在 MNIST 上实现简单的攻击样本1 训练一个数字分类网络2 控制输出的概率, 看输入是什么3 让正确的图片分…

麻雀搜索优化算法MATLAB实现,SSA-BP网络

对于麻雀搜索算法的介绍,网上已经有不少资料了,这边公布SSA的matlab实现 下面展示SSA算法的核心代码以及详细注解 % 麻雀搜索算法函数定义 % 输入:种群大小(pop),最大迭代次数(Max_iter),搜索空间下界(lb)&#xff0c…

CSS实现空心的“尖角”

大家好,我是南宫,来分享一个昨天解决的问题。 我记得之前刷面试题的时候,CSS面试题里面赫然有一题是“如何用CSS实现三角形”,我觉得这个问题确实很经典,我上的前端培训班当初就讲过。 大概思路如下: 先…

想分析全国用电及煤气、液化石油气供应利用情况,这部分数据对你有帮助!

随着经济的发展和人民生活水平的提高,能源的需求量越来越大。其中,电力和煤气、液化石油气等能源的供应利用情况与我们的日常生活息息相关。 今天我们根据《中国城市统计年鉴》统计的中国地级及以上城市的煤气及液化石油气供应及利用情况的指标&#xff…

洗内裤的小洗衣机买啥牌子的?性价比婴儿洗衣机推荐

在近些年来,人们对生活和健康的要求越来越高,所以内衣洗衣机也走进了人们的视线,许多研究显示,单纯的手洗是不能彻底消除体内的细菌的,而机洗则可以有效地消除大部分的细菌,但是机洗内衣裤对洗衣机的卫生要…

MySQL数据库入门到大牛_基础_11_数据处理之增删改

本章将会介绍DML中的增删改查操作,增删改泛泛来讲是针对表中数据的修改。 文章目录 1. 插入数据1.1 实际问题1.2 方式1:VALUES的方式添加1.3 方式2:将查询结果插入到表中 2. 更新数据3. 删除数据4. 小结5. MySQL8新特性:计算列6. …

如何正确复制CSDN文章到自己的博客

1.csdn 文章页面,按f12打开浏览器开发者工具 2.按ctrl f 找 "article_content" 3.在该元素源代码上右键 “Copy”->“Copy element” 4.新建一个txt文件,把你粘贴的东西复制进去,然后再把文件名的后缀改为html,然后打开html文件,把里面的内容ctrlA全部…

【腾讯云云上实验室-向量数据库】腾讯云开创新时代,发布全新向量数据库Tencent Cloud VectorDB

前言 随着人工智能、数据挖掘等技术的飞速发展,海量数据的存储和分析越来越成为重要的研究方向。在海量数据中找到具有相似性或相关性的数据对于实现精准推荐、搜索等应用至关重要。传统关系型数据库存在一些缺陷,例如存储效率低、查询耗时长等问题&…

VSCode配置用户代码段以及常用快捷键汇总

一:前言 VSCode 是一款由微软开发的轻量级编辑器,可以安装插件和兼容多种语言。其本身已经是目前前端开发所使用的主流软件。那么在开发过程中,我们经常要写很多重复性的代码,比如当你去新建一个 .vue 页面的时候,往往…

服务器中了elbie勒索病毒解决办法,elbie勒索病毒解密数据恢复

科技技术的不断发展,为企业的生产运营提供了极大便利,但网络安全威胁也不断增加,近期云天数据恢复中心陆续接到很多企业的求助,企业的服务器中了elbie勒索病毒,导致系统瘫痪,所有业务无法正常开展&#xff…

全球首款容器计算产品重磅发布,激活上云用云新范式

云布道师 10 月 31 日,杭州云栖大会上,阿里云云原生应用平台负责人丁宇宣布,阿里云容器计算服务 ACS 正式发布!ACS 将大幅降低企业和开发者用云门槛,真正将 Serverless 理念大规模落地。 容器计算服务 ACS&#xff0c…