gpt4 book ai didi

c# - 将对象列表转换为接口(interface)列表

转载 作者:可可西里 更新时间:2023-11-01 08:34:26 25 4
gpt4 key购买 nike

如果我有实现 ISomeInterface 的 objectA

为什么我不能这样做:

List<objectA> list = (some list of objectAs . . .)

List<ISomeInterface> interfaceList = new List<ISomeInterface>(list);

为什么我不能将列表插入到 interfaceList 构造函数中?有什么解决方法吗?

最佳答案

在 C# 3.0 + .Net 3.5 及更高版本中,您可以通过执行以下操作来解决此问题

List<ISomeInterface> interfaceList = new List<ISomeInterface>(list.Cast<ISomeInterface>());

这不起作用的原因是 List<ISomeInterface> 的构造函数在这种情况下需要 IEnumerable<ISomeInterface> .列表变量的类型虽然只能转换为 IEnumerable<objectA> .尽管objectA可以转换为 ISomeInterface类型 IEnumerable<objectA>不可转换为 IEnumerable<ISomeInterface> .

这在 C# 4.0 中有所改变,它为语言添加了 Co 和逆变支持,并允许进行此类转换。

关于c# - 将对象列表转换为接口(interface)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com