写点什么

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:5110497

评论

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

河南数字经济产业创新研究院加入星策社区,携手推进企业智能化转型发展

星策开源社区

人工智能 开源 AI 企业转型 智能化

高级前端一面常考手写面试题指南

helloworld1024fd

JavaScript

一份vue面试考点清单

bb_xiaxia1998

Vue

clickhouse在风控-风险洞察领域的探索与实践

京东科技开发者

flink 数据 Clickhouse 风控 风险控制

5年匠心之作,云原生安全真经大公开!

青藤云安全

网络安全 青藤云安全 云原生安全

说说你对Vue的keep-alive的理解

bb_xiaxia1998

Vue

从源码角度看React-Hydrate原理

flyzz177

React

ShardingSphere + OpenSergo,共同提升微服务体系下数据库的性能与稳定

SphereEx

数据库 微服务 Apache ShardingSphere

首个中文Stable Diffusion模型开源;TPU演进十年;18个PyTorch性能优化技巧 | AI系统前沿动态

OneFlow

人工智能 开源 深度学历 TPU

什么是Maven

莪是男神

Java maven 11月月更

源码学习之Spring容器创建原理

京东科技开发者

xml spring 源码 容器 测试

FusionInsight MRS Flink DataStream API读写Hudi实践

华为云开发者联盟

大数据 华为云 数据读写 企业号十月 PK 榜

手写现代前端框架diff算法-前端面试进阶

helloworld1024fd

JavaScript

手写JavaScript常见5种设计模式

helloworld1024fd

JavaScript

【C语言】float 关键字

謓泽

11月月更

中高级前端开发需要掌握的vue知识点

bb_xiaxia1998

Vue

学习MySQL必须掌握的13个关键字,你get了吗?

小小怪下士

Java MySQL 程序员

GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

阿里巴巴文娱技术

开源 移动开发 移动端开发

DTSE Tech Talk | 第10期:云会议带你入门音视频世界

华为云开发者联盟

云计算 后端 华为云 企业号十月 PK 榜

从recat源码角度看setState流程

flyzz177

React

Flask框架:如何运用Ajax轮询动态绘图

华为云开发者联盟

JavaScript 前端 华为云 企业号十月 PK 榜

90 条简单实用的 Python 编程技巧,建议收藏

千锋IT教育

前端手写面试题,看这一篇就够了

helloworld1024fd

JavaScript

前端vue多人写作开发技巧-路由配置

千锋IT教育

优化开发人员对 K8s 安全的影响

HummerCloud

Kubernetes DevSecOps 11月月更

APP“小动作”不断?HarmonyOS 3隐私中心可视化面板让它无处藏身

Geek_2d6073

python的成员方法的简单介绍

乔乔

11月月更

为提高 SDLC 安全,GitHub 发布新功能|GitHub Universe 2022

SEAL安全

GitHub 安全

一个 SaaS 软件同本地部署 On-Premises 系统集成的实际项目案例分享

汪子熙

微服务 SaaS 系统集成 On-Premises 11月月更

说说Vue响应式系统中的Watcher和Dep的关系-面试进阶

bb_xiaxia1998

Vue

深入react源码看setState究竟做了什么?

flyzz177

React

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