我正在阅读page,它在Visual Studio 17 RC的release notes中正式引用,它指出以下内容:
拍摄时:
public abstract class Foo
{
public abstract void AbstractTuple((int a, string b) tuple);
public virtual void OverrideTuple((int a, string b) tuple)
{
Console.WriteLine($"First= {tuple.a} Second = {tuple.b}");
}
}
public class Bar : Foo
{
public override void AbstractTuple((int c, string d) tuple)
{
Console.WriteLine($"First= {tuple.c} Second= {tuple.d}");
}
public override void OverrideTuple((int c, string d) tuple)
{
base.OverrideTuple(tuple);
}
}
我收到以下错误:
和
问题是:
(int a, int b)
和(int c, int d)
的方法不被视为重载候选者,并且会产生错误! 最佳答案
据我所知,该文档已过时。 That document hasn't significantly changed since April 2016,而您得到的错误(在Roslyn源代码中为ERR_CantChangeTupleNamesOnOverride
)为was introduced in August 2016(不要被其他错误代码所混淆,稍后将对其进行更改)。
是的,这似乎是新的预期行为。
考虑到C#7.0仍在开发中,因此文档是一个问题。官方.Net文档is currently under review中有关元组的文章,尽管它根本没有提到这些问题。
因此,您发现的过时文档可能是目前的最佳来源。 I have created an issue asking for the documentation to be updated.