不允许创建 System.Void 数组类型

不再允许为 System.Void 数组创建 System.Type 实例。

旧行为

以前,typeof(void).MakeArrayType() 返回一个 System.Type 实例。

新行为

从 .NET 9 开始,typeof(void).MakeArrayType() 会引发异常。

引入的版本

.NET 9 预览版 1

中断性变更的类型

此更改为行为更改

更改原因

System.Void 数组是无效类型。 在某些情况下(例如,C# 中的 void[] 无法编译),此类型会被拒绝,因此无法创建此类型的数组。

.NET 运行时允许在某些情况下创建这种无效类型。 但是,尝试在其他 .NET 运行时 API 中使用此无效类型通常会导致意外行为。 为了使行为稳健且一致,最好在所有情况下都禁止创建这些无效的数组类型。

删除尝试为 System.Void 数组创建类型的代码。

受影响的 API