3

为什么C#8接口成员的默认实现会报错?

public interface Logger
{
    void Info(string message);
    void Error(string message);
    // C#8 Default implementations of interface
    void Warn(string message)
    {
        // "interface method cannot declare a body" error message
    }
}

.NET Core 3.0 的配置如屏幕截图所示。

在此处输入图像描述

4

2 回答 2

10

这是一个 Resharper/Rider 错误:https ://youtrack.jetbrains.com/issue/RSRP-474628

于 2019-10-12T03:10:15.493 回答
6

该功能是健全的,你的设置是正确的。以下对我有用,我可以在.Net Core 3中编译和运行以下内容

class Program
{
   interface IDefaultInterfaceMethod
   {
      void DefaultMethod()
      {
         Console.WriteLine("I am a default method in the interface!");
      }
   }
   static void Main(string[] args)
   {
      Console.WriteLine("Hello World!");
   }
}

不过请注意,我在 IDE 中遇到了您的错误!!但是错误窗口中没有错误。但是,它仍然可以编译和运行,所以它不是 C#8 .. 看到这是一个确定的信号,还有其他问题

在此处输入图像描述

简而言之,这可能是一个Resharper问题,当我暂停Resharper时,误报消失了

于 2019-09-26T06:55:25.037 回答