考慮下面的比賽:參數類型該類
public interface ITree<X>
{
...
ITree<X> Union(ITree<X> other);
...
}
的想法是,我要實現幾種類型的樹。但是,Union()
方法僅適用於如果您嘗試將的兩棵樹組合在一起的。但是,上面的類型簽名不會強制執行此限制。
所以,我的問題是:我如何寫一個類型簽名Union()
使得other
參數必須具有同一類型爲this
? (顯然,如果類型不匹配,我可以做一個動態運行時測試並拋出一個異常,但是如果可以完成的話,我會在編譯時檢查它)。
@JLRishe - 這不會是因爲如果他們都執行「ITree」,您可以將「RedBlackTree 」與「SplayTree 」聯合起來。 –
Lee
2013-03-14 19:20:54
爆炸!你是對的。我認爲這個問題是指「X」。 – JLRishe 2013-03-14 19:23:05
@Lee我不確定這是泛型系統可以用任何有用的方式表達的類型約束。 (只是沒有在界面中的方法。) – millimoose 2013-03-14 19:24:12