首页 > 解决方案 > 忽略编译器错误 BC30668:“此版本的编译器不支持具有嵌入式引用的类型”

问题描述

我正在使用 Visual Studio 2019 v16.8.2,当我尝试编译用 VB.NET 编写的代码时,我在其上声明了一个函数,其名称为“ImageData”的参数是用 C# 编写的第 3 方库中的一个类,并且那个“ImageData”类公开了一个类型的公共属性System.Span,我得到下一个编译器错误:

错误 BC30668 'ImageData' 已过时:'此版本的编译器不支持具有嵌入式引用的类型。'。

经过一番研究,这似乎是一个设计上的无意义决定

他们已经确认这种行为是设计使然。我不明白为什么当 c# 能够定义它们时,他们不打算让仅堆栈结构在 VB 中使用。也许他们认为 ref 结构类似于不安全类型。因此,在大多数情况下,VB 开发人员可能不会急于使用这些类型。但是这个假设没有意义,因为 ref 结构不是不安全的代码。它们可以在不安全上下文之外的 C# 7.2 中定义或使用,为什么我们不能在 VB 中使用它们?

System.Span(Of T) 和 System.ReadOnlySpan(Of T) 对于关心性能和类型安全的 .NET 开发人员来说都是重要的新 API。我们在使用它们时应该感到自然,而不是看到烦人的 BC30668 编译错误。

是否有任何解决方法可以忽略此编译器错误,以便我可以在 VBNET 下编译我的代码?

标签: c#.netvb.netvisual-studiocompiler-errors

解决方案


推荐阅读