这比听起来更复杂,因为它会导致 destruct 性的变化.
specification for Covariant Return Types还包含一份支持接口协方差的草案.它包括以下部分,我将逐字引用(强调我的):
[建议的接口协方差规范]在技术上是一个突破性的变化,因为下面的程序今天打印"C1.M",但在建议的修订下将打印"C2.M".
using System;
interface I1 { object M(); }
class C1 : I1 { public object M() { return "C1.M"; } }
class C2 : C1, I1 { public new string M() { return "C2.M"; } }
class Program
{
static void Main()
{
I1 i = new C2();
Console.WriteLine(i.M());
}
}
Due to this breaking change, we might consider not supporting covariant return types on implicit implementations.个
有关此功能的正在进行的讨论可在此处找到:
https://github.com/dotnet/csharplang/issues/49个
在过go 的几年里没有发生太多事情,所以我猜这目前并不被社区认为是一个高度优先的扩展.