微软 .NET 团队首席项目经理 Kathleen Dollard 发布了 .NET 语言策略的更新。新文档是编写的上一个文档的相同思想的延续,其中C#和F#是不断发展的语言,VB.NET 是一种利基语言。
新的战略文件托管在Microsoft Learn网站上。它分为三种主要的.NET语言:C#,F#和 VB.NET。
C# 被认为是 .NET 社区中使用最广泛的语言。因此,它将积极发展,以保持“最先进的编程语言”。该团队明确表示,他们倾向于使大多数开发人员受益的设计决策,而回避 C# 的专门增强功能。同时,保持“对向后兼容性的高度承诺”将意味着团队将考虑任何重大更改的规模和对整个 C# 生态系统的影响。
C# 开发人员对语言演变的一个突出评论是许多遗留结构的继续存在,例如非泛型集合(如 .NET 第一版的 ArrayList)或本机事件支持(在现代 C# 的异步世界中基本上已经过时)。微软.NET框架团队的项目经理Immo Landwerth认识到,该团队已经尝试在Windows 8时代推出没有遗留组件的新.NET,并且“事实证明它是完全行不通的”和“破坏整个生态系统”。然后,可以假设这些功能将在 C# 中保留很长时间。
F#语言策略将首先侧重于提供“语言领导和指导”。该语言从社区贡献中受益明显大于 C#。为了帮助保持较高的贡献质量,Microsoft 将支持技术决策并提供体系结构方向。
F# 还有两个策略亮点。一种是使其与新的 C# 保持可互操作,认识到 C# 和 F# 在实际解决方案中经常一起使用。另一个是简化新 F# 开发人员的进入门槛,其中可能包括改写错误消息和重新设计语言功能以简化。
Visual Basic.NET (VB.NET) 将得到维护,以跟上新的运行时和库的增强功能,而无需向语言专门添加任何新功能。.NET 语言的横向协同演进已经在 2017 年的第一个 .NET 战略文档中被放弃,VB.NET 留下了一种称为“仅消费方法”的东西。根据带注释的策略文档,这意味着 VB.NET 将能够通过公共语言运行时 (CLR) 的正常 .NET 跨语言互操作机制访问新的 .NET 运行时和 API 增强功能,但它不会有任何新语法来定义 VB.NET 代码中的新功能。
在回复策略公告博客页面上的开发人员评论时,Kathleen Dollard 回答说,“仅消费”意味着 VB.NET 开发人员将无法创建 Span 和内存结构,但他们将能够在 C# 中调用返回它们的方法。
从对“稳定设计”和“核心VB方案”的声明中可以清楚地看出,微软不会扩展 VB.NET 语言的设计或其工作负载,主要围绕Windows Forms应用程序或库进行分组。此外,有一个明确的句子,微软“不期望”支持Web前端(意味着Blazor)或跨平台UI框架(意味着MAUI)。
较旧的 .NET 语言(如 C++/CLI)已从策略中省略,尽管公告的注释中指出这些语言不由 .NET 语言产品团队管理。开发人员在社交媒体上评论说,他们对策略的实际变化感到困惑。