c#集合inheritance

c#中是否有一个集合支持inheritance,就像对象可以看到包含来自另一个元素以及它们自身的所有元素一样?

例如:

HashSet animals = new HashSet(); HashSet dogs = new HashSet(); animals.also_appears_to_include(dogs); 

因此,如果我为狗添加2个元素,向动物添加1个元素,那么看看动物有多少元素我会看到3。

或者我可以在每个元素中引用上面提到的3个元素,给动物3个元素和狗2.我仍然有两个独立的,重叠的列表是可取的,但是在这个简单的例子中添加和删除元素可能会变得棘手在添加和删除狗的情况下必须添加或删除两个集合。

或者我可以使用此function实现我自己的集合。

但是,MS没有提供可以实现您function的任何内容

你可以保留一组动物并使用linq来动态过滤它:

 var animals = new HashSet(); var dogs = animals.OfType(); 

让狗和猫从接口inheritance,并创建接口的HashSet而不是类。 或者使用基类。

例如:

 HashSet 

那不是那么棘手

 // Adding Animals.Add( animal ); if( animal is dog ) Dogs.Add( animal ); //Removing Dogs.Remove( animal ); Animals.Remove( animal );