无法使用界面默认方法

时间:2018-12-09 17:42:44

标签: c# interface c#-8.0 visual-studio-2019

我已经安装了Visual Studio的新版本,并将项目设置为C#8。当我尝试使用如下所示的新界面功能时,它说我无法在界面中实现,这似乎以某种方式无法使用新功能。谁能解释为什么,它仍然不包括在2019年预览版中吗?

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

2 个答案:

答案 0 :(得分:2)

基于this

  

Microsoft已充实了有关C#版本8.0的更多详细信息,下一篇   计划对该语言进行重大发布。预计C#8.0将会发布   .Net Core 3.0的到来,这是2019年。

所有C#8功能仍处于开发初期,并且可能会发生变化。因此,最好等到这些功能最终发行后再发布。以下博客也可能会有所帮助:

Any estimation for C# 8.0 release date?

并非所有C#8.0功能都可用(Visual Studio 2019的预览1)。您可以在以下链接中找到当前可用功能的列表:

Take C# 8.0 for a spin

答案 1 :(得分:0)

.NET Core 3.0预览版1中没有默认接口方法。这确实是一个预览预览-即使没有一些人工修复,异步枚举也无法使用。 Roslyn团队decided to release the preview尽管有些事情无法解决:

  
    

我们应该告诉用户跳过此功能直到预览2吗?

  
     

这是预览而不是RTM。如果我们告诉用户由于存在错误而跳过预览功能,我们应该完全停止提供预览。

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

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

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

但是请注意日期-自2018年4月2日以来未对编译器进行更新。预览1中发布的功能是2018年10月的最新更新。