我有一个容器类,其中包含许多都从公共基类继承的对象列表。如果我只有基类型,我该如何添加到这个类?性能至关重要,所以我想避免不必要的铸造。
(list, sets, dict)
答案 0 :(得分:1)
您有3个选项:
1-将listA
,listB
,listC
合并为一个集合:List<Base>
并将Add
方法合并到Add(Base b)
2-将Add
方法合并为单一方法:
public Add(Base base) {
if(base is A a) listA.Add(a);
else if(base is B b) listB.Add(b);
else if(base is C c) listB.Add(c);
else throw new NotImplementedException()
}
3-将DoSomething
方法更改为通用:
Container container = new Container;
container.Add(someFactory.DoSomething<A>());
我不了解您的情况,但IMO最后一个选项会更快。