还在苦苦敲代码开发APP?你out啦! 试试积木搭建APP吧~

C#泛型(List)中基类和子类 怎么转换?

来源:清泛原创     2016-06-27 15:52:53    人气:     我有话说( 0 人参与)

List<ChildClass> childList = ...Foo(List<BaseClass> baseList);需求:把子类列表传入函数Foo,Foo支持所有子类列表。方法一:Foo(ch...

List<ChildClass> childList = ...
Foo(List<BaseClass> baseList);
需求:把子类列表传入函数Foo,Foo支持所有子类列表。

方法一:
Foo(childList.Select(p => p as BaseClass).ToList())

上述 Select 转换是双向的,基类转子类也没问题。

方法二:
List<BaseClass> baseList = new List<BaseClass>();
baseList.AddRange(childList);
Foo(baseList);

这种方式是单向的,只能子类转基类,反之报错:
 

方法三:
函数参数使用泛型
public string Foo<T>(List<T> list) where T : BaseClass { ... }
Foo(childList);

方法四:
Foo(IEnumerable<BaseClass> baseList);
Foo(childList);

C# 基类 子类 转换

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)
分享到: