在C#中,不可以直接将子类添加到List<Parent>
中。这是因为List<Parent>
是一个泛型列表,它的类型参数是Parent
,只能接受Parent
类型的对象。如果尝试将子类添加到List<Parent>
中,会导致编译错误。
然而,可以通过使用协变和逆变来实现将子类添加到List<Parent>
中的需求。协变和逆变是C# 4.0引入的特性,用于在泛型类型参数上放宽或限制类型的转换规则。
在这种情况下,可以使用协变来实现将子类添加到List<Parent>
中。具体做法是将List<Parent>
声明为IEnumerable<out Parent>
,这样就可以将子类对象添加到列表中。示例代码如下:
List<Child> children = new List<Child>();
List<Parent> parents = children.Cast<Parent>().ToList();
在上述代码中,Child
是Parent
的子类,首先创建了一个List<Child>
对象children
,然后通过Cast<Parent>()
方法将其转换为IEnumerable<Parent>
,最后使用ToList()
方法将其转换为List<Parent>
。
需要注意的是,协变只适用于只读操作,即只能从泛型类型参数返回,不能进行写操作。如果尝试在List<Parent>
中添加子类对象,仍然会导致编译错误。
推荐的腾讯云相关产品:无
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云