gpt4 book ai didi

c# - 在 C# 中转换问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:14 25 4
gpt4 key购买 nike

我有一个继承自 IList 的接口(interface):

public interface IBase {}
public class Derived : IBase {}
public interface IMyList : IList<IBase> {}

我想转换一个 IMyList 类型的变量输入 IList<Derived>List<Derived> ,以更容易或最有意义的为准。执行此操作的最佳方法是什么?

请注意,我使用的是 .NET 3.5

最佳答案

直接转换不适合,因为可能会出现许多问题( IMyList 可能包含 Derived 以外的类型,等等)

只要您不修改列表(在这种情况下,IEnumerable<Derived> 就可以),您可以简单地:

var validItems = myList.Cast<Derived>();

然后遍历结果。

编辑

根据下面 OP 的评论,还有两件事要提:

1) 如果你需要 IList<Derived> ,您可以简单地添加到上面并调用 myList.Cast<Derived>().ToList();

2) 如果这些确实是要求,那么您的代码就没有任何意义。如果IMyList应该只包含 Derived然后对象 IMyList应该来自 IList<Derived> .请记住,虽然您知道只有一种类型实现了 IBase接口(interface),编译器并不那么具体。

为了使用接口(interface)而到处使用接口(interface)对任何人都没有帮助!

关于c# - 在 C# 中转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6612294/

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