根据基类类型添加到容器中的正确列表

时间:2018-03-13 16:21:07

标签: c# .net

我有一个容器类,其中包含许多都从公共基类继承的对象列表。如果我只有基类型,我该如何添加到这个类?性能至关重要,所以我想避免不必要的铸造。

(list, sets, dict)

1 个答案:

答案 0 :(得分:1)

您有3个选项:

1-将listAlistBlistC合并为一个集合: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最后一个选项会更快。