字号·· | 护眼
theregister

微软开发者欢呼:联合类型将于11月登陆C#

微软将于今年11月推出C#的下一个迭代版本。雷德蒙德最近发布了C# 15的预览版,引入了更严格的数据类型限制以及增强的内存安全保护。此版本中最常被请求的功能之一就是联合类型。联合类型对编程来说并不新鲜。

Python、Scala和TypeScript都认可这一概念。

但对于C#来说,“这就是联合类型应有的样子,”C#首席设计师Mads Torgersen在今年早些时候的介绍性演讲中夸耀道。

简而言之,联合类型提供了一种将不同的自定义数据类型归类为单个实体的方法。

union关键字可以将一组自定义数据类型(如“Dog”、“Cat”和“Bird”)联合为一个总括类型,例如“Pet”。

union关键字为编译器提供了明确的“宠物”列表,该列表无法扩展。

“联合类型实现了传统层次结构无法表达的设计,将现有类型的任意组合组合成单个编译器验证的契约,”微软文档解释道。

对开发者的好处包括更好的模式匹配、为联合类型编写自定义函数的能力、防止恶意数据类型、更强的抽象以及减少样板错误代码的编写。

在他的演讲中,Torgersen与微软首席工程师Dustin Campbell一起演示了联合类型如何整合两个不同的记录,以指定网络输入流的成功或失败。

他们展示了两个独立的记录,一个使用整数表示成功,另一个使用标准文本错误消息。

通过使用union关键字对它们进行分组,他们创建了一个单一的switch表达式来解析结果。

如果没有这个捷径,他们就必须在switch语句中添加错误消息来处理未知输入,创建一个包装器(这会使用更多内存,并且可能更容易出错),或者部署第三方库来解析结果。

虽然联合类型中允许的数据类型受到限制,但C# 15的另一个新功能——封闭层次结构——为继承的派生类型带来了类似的控制。

基类使用closed关键字将直接继承严格限制为在同一程序集中定义的派生类型。封闭层次结构将阻止第三方子类型被编译,否则可能会产生错误。

扩大危险区域C#还扩大了由开发人员指定为不安全的操作的定义范围。

最初,标记为“unsafe”的代码块只是提醒编译器它可能以不安全的方式与内存交互。

现在,该关键字的范围已扩大到“告知调用者他们有必须履行的义务以维持安全,”微软产品经理Richard Lander在今年早些时候的一篇博客文章中写道。扩大后的范围将使编译器能够标记不安全的操作。

这一努力遵循了Rust和Swift的做法,在这些语言中,该关键字受“更严格、传播导向的语义”支配,Lander写道。

C# 15的其他新功能包括“集合表达式参数”,它允许开发人员使用with关键字,在集合表达式语法中直接将参数(如容量或比较器)传递给底层集合的构造函数。

开发人员现在可以在扩展块中声明索引器,以及为break和continue语句添加标签,以便在嵌套循环中获得更好的控制。

值得注意的是,即使雷德蒙德的优先事项已从销售Windows和Office许可证转向销售云订阅并将其AI Copilot助手塞进每个角落,C#仍然持续存在。

C#最初由Anders Hejlsberg创建,微软于2002年首次发布,作为Java的替代品,可以在当时新的Windows .Net平台上运行。

C#后来开创了编程语言的新功能,如异步同步功能,以及用于查询数据库和其他数据源的LINQ接口。二十多年过去了,微软仍在定期更新该语言。要测试C# 15,请下载.NET 11的预览版。®

阅读媒体原文 ↗