在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)。 –
接口不可能推斷名稱。 –