不能使用接口默认方法

Cannot use interface default methods

我已经安装了新版本的 visual studio 并将项目设置为 C# 8。当我尝试使用如下所示的新界面功能时,它说我无法在界面中实现,这似乎不知何故我无法使用新界面特征。谁能解释一下为什么,它仍然没有包含在 2019 预览版中吗?

interface IDefaultInterfaceMethod
{
    public void DefaultMethod()
    {
        Console.WriteLine("I am a default method in the interface!");
    }
}

基于this

Microsoft has fleshed out more details about C# Version 8.0, the next planned major release of the language. C# 8.0 is expected to arrive in 2019, concurrent with the arrival of .Net Core 3.0.

所有 C# 8 功能仍处于早期开发阶段,很可能会发生变化。所以最好等到最终版本中的功能结束。以下博客也可能有所帮助:

Any estimation for C# 8.0 release date?

并非所有 C# 8.0 功能都可用(Visual Studio 2019 的预览版 1)。您可以在以下 link:

中找到当前可用功能的列表

Take C# 8.0 for a spin

默认接口方法在 .NET Core 3.0 Preview 1 中不可用。这确实是一个 preview 预览 - 如果没有一些手动修复,即使异步枚举也无法工作。 Roslyn 团队 decided to release the preview 尽管有些事情不会马上解决 :

Should we tell users to skip this feature until preview 2?

这是预览版,不是 RTM。如果我们告诉用户因为他们有错误而跳过预览功能,我们应该完全停止发布预览。

默认接口实现可通过 SharpLab.io 进行实验。此站点通过显示编译器为任何示例生成的 C#、IL 或汇编代码来展示编译器的工作原理。

Sharplab.io 允许使用许多不同的实验性编译器。 Default Interface Methods选项可以编译这个例子:

interface IDefaulter
{
    int GoBust()=>0;
}

不过请注意日期 - 该编译器自 2018 年 4 月 2 日以来未更新。预览版 1 中发布的功能最后一次更新是在 2018 年 10 月。