1
我需要一個類型安全的多類型集合,例如,映射從通用標記類Tag<T>
到類型爲T
的對象。在Java中,我會寫這樣的事情:C中的多類泛型集合#
class ClassMap {
private HashMap<Tag<?>,?> map = new HashMap<>();
<T> void put(Tag<T> tag, T value){
map.put(tag,value);
}
<T> get(Tag<T> tag){
return (T) map.get(tag);
}
}
集合是類型安全的,即投(T)
將始終作爲集合檢查該類對應於插入標籤成功。
但如何在C#中做到這一點? Afaik,C#中沒有通配符,所以我在這裏不能寫HashMap<Tag<?>,?>
。我如何告訴C#我需要一個通用映射,但無法準確指定其參數?
這似乎是做我想要的!所以這通常是這樣的:每當我需要一個類字段,如果我用Java編寫它就會有通配符,我需要用對象(或另一個非泛型基類)替換所有通配符的類型,並且只返回一次我需要他們? – gexicide
是的,這將一般工作。不過,你應該擔心性能,從'object'類型轉換是一項繁重的操作,應該儘可能地避免。 –
太好了,謝謝!編輯:那麼,如果這樣的表現受到影響,是否有更好的方法來維護各種類型可能混合的集合?我看不到。 – gexicide