c#集合继承

本文关键字:继承 集合 | 更新日期: 2023-09-27 18:16:37

c#中是否有一个集合支持类似继承的概念,即对象可以看起来包括来自另一个对象的所有元素以及它们自己?

例如:

HashSet<animal> animals = new HashSet<animal>();
HashSet<dog> dogs = new HashSet<dog>();
animals.also_appears_to_include(dogs);

例如,如果我给狗添加2个元素,给动物添加1个元素,那么看看动物有多少元素,我将看到3个。

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

或者我可以用这个功能实现我自己的集合

c#集合继承

MS没有提供任何东西可以实现您的功能,但是

你可以只保留一组动物,然后使用linq对其进行过滤:

var animals = new HashSet<Animal>();
var dogs = animals.OfType<Dog>();

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

例如:

HashSet<IAnimal>

这没那么棘手

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