【问题标题】:Cannot use interface default methods不能使用接口默认方法
【发布时间】:2018-12-09 17:42:43
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    基于this

    微软已经充实了关于 C# 8.0 版的更多细节,下一个 计划主要发布该语言。 C# 8.0 预计将在 2019 年,与 .Net Core 3.0 同步到来。

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

    Any estimation for C# 8.0 release date?

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

    Take C# 8.0 for a spin

    【讨论】:

    • 我明白了,但在 2019 年的预览版中,已经有 C# 8 可供选择,因此我希望它已经可用
    • @dev 我认为它们现在只是计划中的功能,包含在 2019 预览版中,很可能最终会出现在最终版本中。
    • @Wanton 可能接口默认方法等一些功能还没有包含!
    • @S.Akbari 你是对的,它不包含在 C# 8.0 beta 中。 blogs.msdn.microsoft.com/dotnet/2018/12/05/… cmets Mads Torgersen 就是这么说的。我将删除我的其他 cmets。
    【解决方案2】:

    默认接口方法在 .NET Core 3.0 Preview 1 中不可用。这确实是一个 preview 预览 - 如果没有一些手动修复,即使异步枚举也无法工作。 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 月。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多