Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C默认接口实现-无法覆盖_C#_Default Interface Member - Fatal编程技术网

C# C默认接口实现-无法覆盖

C# C默认接口实现-无法覆盖,c#,default-interface-member,C#,Default Interface Member,我按照这个指南使用默认接口实现特性。我复制了一段代码,该代码在接口IA中定义了默认实现,然后在接口IB中重写它: 但它给出了一个错误CS0106修饰符“override”对此项无效,并且警告CS0108“I1.M”隐藏继承的成员“I0.M”。如果要隐藏,请使用新关键字。TargetFramework设置为net5.0,LangVersion是最新版本。为什么即使在官方文档中描述了它,它也不起作用?中的it称不允许隐式覆盖 令人困惑的是,它后面的IC接口在使用隐式方法时没有重复该语句,使其看起来隐

我按照这个指南使用默认接口实现特性。我复制了一段代码,该代码在接口IA中定义了默认实现,然后在接口IB中重写它:

但它给出了一个错误CS0106修饰符“override”对此项无效,并且警告CS0108“I1.M”隐藏继承的成员“I0.M”。如果要隐藏,请使用新关键字。TargetFramework设置为net5.0,LangVersion是最新版本。为什么即使在官方文档中描述了它,它也不起作用?

中的it称不允许隐式覆盖

令人困惑的是,它后面的IC接口在使用隐式方法时没有重复该语句,使其看起来隐式方法是有效的。IC似乎是您复制的接口。

显然,带有override关键字的示例不正确,必须删除该关键字。此外,只有在明确指定了方法接口时,它才起作用:

interface I0
{
    void M() { Console.WriteLine("I0"); }
}

interface I1 : I0
{
    void I0.M() { Console.WriteLine("I1"); }
}

接口方法签名有正文可以吗?@ilkerkaran Yeap,请参阅文档:C8@HimBromBeere,谢谢你的提醒。Darn synthetic sugars:还有一个参考资料,我找不到更好的关于这个语言特性的文档。这似乎是MSDN提供的最好的设计方案文档。我也尝试过显式方法,但它也给出了编译器错误
interface I0
{
    void M() { Console.WriteLine("I0"); }
}

interface I1 : I0
{
    void I0.M() { Console.WriteLine("I1"); }
}