将列表
本指南介绍了如何将 Client
对象 (List<Client>
) 列表转换为其相应的 IDic
接口 (List<IDic>
) 列表。
为什么直接投射失败
.NET 中允许从派生类型(如 Client
)直接转换为基类型(IDic
)。然而,由于协方差的限制,相反的过程并不简单。 这些限制可防止不安全操作,即基类型列表可能意外包含派生类型元素,从而保持类型安全。
有效的转换方法
两种可靠的方法实现所需的转换:
1。利用 IEnumerable<IDic>
(.NET 4 及更高版本)
.NET 4 及更高版本支持与 IEnumerable<T>
的协方差。 这可以实现从 List<Client>
到 IEnumerable<IDic>
的转换,从而允许将 Client
对象作为 IDic
实例进行迭代。
2。构建新列表
要创建 List<IDic>
,您必须显式构建一个新列表并使用接口引用填充它。 .NET 4 为此提供了 ToList<T>()
方法。 .NET 3.5 使用 Cast<T>()
后跟 ToList()
。
关于数据独立性的重要说明
两种技术都会生成单独的列表,从而保持类型安全。 至关重要的是,对原始 List<Client>
的修改不会自动更新新的 List<IDic>
。 只有直接对 Client
对象本身进行的更改才会在两个列表中可见。
以上是如何将列表转换为.NET 中的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!