在C#7中,我们可以实现Deconstruct
方法,该方法在将对象分配给具有匹配类型的元组时将被调用。C#7:为什么元组解构没有通过接口实现?
我想知道为什么微软决定实施这个“魔法”。有一种特殊命名的方法不能从任何地方继承,如果你命名它并输入正确的参数,那么你就可以将这个对象分配给相应的元组。
我会想象,设计团队会为此创建一个接口。
喜欢的东西:
public interface IDecontructible<T1>
{
void Deconstruct(out T1 a);
}
public interface IDecontructible<T1, T2>
{
void Deconstruct(out T1 a, out T2 b);
}
public interface IDecontructible<T1, ... ,Tn>
{
void Deconstruct(out T1 a, ... ,out Tn n);
}
当然也就必须更加接口用不同数量的参数。
这个设计选择是否有任何明显的原因,我错过了?
FWIW此特定位的设计说明[在此处可用](https://github.com/dotnet/csharplang/blob/master/meetings/2016/LDM-2016-05-03-04.md),进一步讨论[从解构主页面链接](https://github.com/dotnet/roslyn/blob/master/docs/features/deconstruction.md)。 –
接口不可能推断名称。 –