C# 8.0 有一个新功能,允许您将默认实现添加到接口上的方法。要么我做错了,要么这个功能不像宣传的那样工作。(我猜是前者。)
我使用以下代码创建了一个新的 .NET Core 3.1 控制台应用程序:
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var xxx = new MyClass { MyInt = 5 };
Console.WriteLine(xxx.GetItNow());
}
}
public interface ITest
{
int MyInt { get; set; }
int GetItNow() => MyInt * 2;
}
public class MyClass : ITest
{
public int MyInt { get; set; }
}
}
该Console.WriteLine(xxx.GetItNow()));
语句无法编译,因为
Myclass 不包含“GetItNow()”的定义...
MyClass
因此,编译器对没有显式引用的事实感到满意GetItNow()
(它不会抱怨MyClass
没有实现接口)。但它不会将默认接口成员视为实现该接口的类的公共方法。
我错过了什么,还是有什么坏了?