【发布时间】:2026-02-17 08:30:01
【问题描述】:
在 C# 7 中,我们可以实现 Deconstruct 方法,在将对象分配给具有匹配类型的元组时将调用该方法。
我想知道为什么微软决定将其作为一种“魔术方法”来实现。有一个特殊命名的方法不是从任何地方继承的,如果你命名正确并输入正确的参数,那么你将能够将此对象分配给相应的元组。
我想,设计团队会为此创建一个界面。
类似:
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 此特定位的设计说明are available here,进一步讨论linked from the main Deconstruction page。
-
使用接口无法推断名称。