2
不是很熟悉C#和泛型泛型重載的方法,所以我可能失去了一些東西很明顯,但:如何調用C#
考慮:
public interface IA { }
public interface IB
{ void DoIt(IA x);
}
public class Foo<T> : IB where T : IA
{
public void DoIt(IA x)
{ DoIt(x); // Want to call DoIt(T y) here
}
void DoIt(T y)
{ // Implementation
}
}
1)爲什麼沒有方法void DoIt(T y)
滿足接口IB
要求的DoIt
方法實現?
2)如何從DoIt(IA x)
內撥打DoIt(T y)
?
對我來說嗯我沒有看到有理由限制T這樣做,因爲IB的'DoIt'實現實際上只接受'IA'作爲參數,所以爲什麼要再限制一次呢?就我的觀點而言,這只是一種無用的層面。 – ckruczek
@ckruczek:當'Foo'的後代必須執行一些'T'特定操作時,這可能很有用,並且它們全部應該存儲在同一個容器(例如,集合)中。 –
Dennis