向修饰的结构Size应用显式InlineArrayAttribute是模棱两可的,在类型加载程序中不再受支持。 以前,指定显式 Size 将导致特定于实现的行为,这些行为可能与用户预期不匹配。
引入的版本
.NET 10
以前的行为
以前,允许对修饰Size的结构进行指定InlineArrayAttribute,但导致特定于实现的行为可能与用户期望不匹配。
[InlineArray(8)]
[StructLayout(LayoutKind.Explicit, Size=32)]
struct Int8InlineArray
{
private int _value;
}
新行为
从 .NET 10 开始,不允许在用Size修饰的结构上指定InlineArrayAttribute。 如果尝试创建此类结构的实例,你将获得一个 TypeLoadException。
破坏性变更的类型
此更改可能会影响 二进制兼容性。
更改原因
为 Size 内联数组结构指定是模棱两可的,任何解释都会与规范相矛盾。
建议的措施
在不太可能的情况下,需要为数组元素或整个内联数组指定显式大小,引入一个结构来包装元素类型或整个数组类型。 在包装器的布局中,相应地指定 Size 。
受影响的 API
- 类型加载程序