写点什么

C#警告波预示未来将增加新的关键字

  • 2022-06-29
  • 本文字数:859 字

    阅读完需:约 3 分钟

C#警告波预示未来将增加新的关键字

与 C# 9 和 10 一样,C# 11 也悄悄地增加了一个新的编译器警告。该警告可以防止使用全部小写的类型名称(如类、结构和接口)。

 

创建这个警告是为了方便微软在未来添加新的关键字。C#的关键只包含小写 ASCII 字母,因此,加入其他任何字母都可以防止类型名称与未来的关键字发生冲突。

 

该警告的文档并没有详细说明他们正在考虑引入哪些关键字。

背景

C#工具链一直将其信息分为三大类:编译器错误、编译器警告和静态分析警告。错误会妨碍编译器正常工作。当这些错误发生时,基本上是在说,编译器检测到了不容忽视的问题。

 

另一类是编译器警告。这意味着存在明显的问题,但编译器仍然可以生成一个输出文件。编译器警告默认是启用的,但开发者可以忽略。另外,开发者也可以要求把它们当作错误处理。

 

最后一类基本上包含“其他一切”。静态分析错误可能只有在特定类型的应用程序甚至是应用程序的特定部分中才算是问题。它们比编译器警告更容易产生误报,也就是不恰当的警告。与其他类型的警告不同,静态分析警告默认是不启用的。在 Roslyn 编译器推出之前,它们是一个完全独立的工具的一部分。所以,有相当多的开发者从来没有用过它们。

 

历史上,微软一直不愿意增加新的编译器警告。因为它们是默认启用的,添加新警告被认为是一种破坏性变化。如果添加了新的警告并启用了 TreatWarningsAsErrors,那么在 C#7 中可以编译的代码在 C#8 中可能会无法编译。

 

从 C# 9 开始,微软增加了C#警告波(Warning Waves)的概念。这是些附加的编译器警告,也就是说,不需要额外安装一个工具或包,它们默认是不启用的。要使用它们,则必须将项目文件中的AnalysisLevel设置为 5 或者更高。


作者简介:

Jonathan Allen 从 90 年代末开始就为一家健康诊所建设 MIS 项目,帮他们从 Access 和 Excel 升级到企业解决方案。在花了五年时间编写金融业自动交易系统后,他成为各种项目的顾问,包括机器人仓库 UI、癌症研究软件的中间层以及一家大型房地产保险公司的大数据需求。在空闲时间,他喜欢研究源于 16 世纪的武术,并从事相关写作。

 

原文链接:

C# Warning Waves Hint at New Keywords in the Future

2022-06-29 08:5111084

评论

发布
暂无评论
发现更多内容

基于有限状态机与消息队列的三方支付系统补单实践

Java架构师迁哥

Redis 子进程开销监控和优化方式

李尚智

Redis开发与运维

读写分离这个坑,你应该踩过吧?

楼下小黑哥

MySQL 主从同步 读写分离

S型曲线不止关乎身材?|技术人应知的创新思维模型(2)

Alan

创新 思维模型

第六周-作业1

Mr_No爱学习

面试被问线程安全怎么保障,我的回答让面试官眼前一亮

996小迁

Java 架构 面试 多线程

算法训练营课程纲要

陈皓07

警察营救安徽望江县17岁女生跳河自尽过程中,现场看热闹的旁观者们在做什么?

wbliu85

2. Spring早期类型转换,基于PropertyEditor实现

YourBatman

Spring Framework 类型转换 PropertyEditor

第十一周作业

solike

架构词典:语言

lidaobing

架构 语言

「生产事故」MongoDB复合索引引发的灾难

Kerwin

数据库 mongodb

甲方日常 64

句子

工作 随笔杂谈 日常

话题讨论 | 作为地地道道的程序员半年内都没摸过代码是什么样的体验?

xcbeyond

话题讨论

Redis 持久化方式-RDB

李尚智

redis redis持久化

告别“效率内卷化”,华为用一年时间让职场人支棱起来

脑极体

《Python深度学习》第二版重磅来袭——(Keras之父亲自编写)

计算机与AI

Windows下MySQL无法启动万能解决方案

MySQL从删库到跑路

MySQL

百篇已过,又是一个新篇章,谈谈感受吧

良知犹存

代码人生

Bitmap为什么那么快?

Man

redis 中间件

拆解增长黑客之实战(二):留存与变现

懒杨杨

读书 增长 产品运营

排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时

蚂蚁集团移动开发平台 mPaaS

小程序 问题排查 mPaaS

数字经济跨越五个融合发展阶段,区块链正成为基础支撑结构

CECBC

数字经济

谷燕西:不需要银行的银行业务

CECBC

移动互联网

第六周-学习总结

Mr_No爱学习

Spock单元测试框架实战指南四 - 异常测试

Java老k

Java 单元测试 spock

5种分布式事务方案与阿里的 Seata 中间件

Bruce Duan

分布式事务 seata

国家计算机网络与信息安全管理中心官员:数字货币的风险仍需关注

CECBC

信息安全

Newbe.ObjectVisitor 0.4.4 发布,模型验证器上线

newbe36524

.net core ASP.NET Core dotnet

报销发票抵扣工资的CTO,该不该? | 法庭上的CTO(5)

赵新龙

CTO 法庭上的CTO

生产环境压测建设历程之三 淘宝网2009年的痛

数列科技杨德华

C#警告波预示未来将增加新的关键字_语言 & 开发_Jonathan Allen_InfoQ精选文章