清泛IT社区

标题: C#泛型(List)中基类和子类 怎么转换? [打印本页]

作者: 清泛网    时间: 2015-11-13 11:37
标题: C#泛型(List)中基类和子类 怎么转换?
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);

这种方式是单向的,只能子类转基类,反之报错:
(, 下载次数: 3053)

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

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







欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3