开发者社区> 问答> 正文

将数组转换为IEnumerable <T>

假设您有一个Employee这样的基本类:

class Employee { public string Name; public int Years; public string Department; } 然后(在一个单独的类中)我有以下代码片段(我想我理解除了最后一个之外的所有内容):

我相信以下代码片段会起作用,因为数组初始化器创建了一个Employee对象数组,该对象与分配给其的workforce变量的类型相同。

Employee[] workforceOne = new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() { Name = "Paul", Years = 4, Department = "software" } }; 然后,我有以下代码片段。我相信这是可行的,因为Employee隐式对象数组是Array()类的实现,该类实现了IEnumerable。因此,我相信这就是为什么可以将数组分配给IEnumerable的原因?

IEnumerable workforceTwo = new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() { Name = "Paul", Years = 4, Department = "software" } }; 然后我有这个代码片段:

IEnumerable workforceThree = new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() { Name = "Paul", Years = 4, Department = "software" } }; 我不确定为什么此代码片段有效? IEnumerable 继承自IEnumerable(并重写(或重载?)GetEnumerator()方法),但因此我是否不应该需要强制转换才能使上述工作像这样:

//The cast does work but is not required IEnumerable workforceFour = (IEnumerable )new Employee[] { new Employee() { Name = "David", Years = 0, Department = "software" }, new Employee() { Name = "Dexter", Years = 3, Department = "software" }, new Employee() { Name = "Paul", Years = 4, Department = "software" } }; 数组似乎是从类型隐式向下转换的IEnumerable,IEnumerable 但是我一直想,当您需要将类型转换为更具体的类型时,需要显式转换。

也许我在这里缺少我所理解的一些简单信息,但是有人可以帮助我进行有关此方面的理解。

谢谢。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 20:42:55 520 0
1 条回答
写回答
取消 提交回答
  • 从文档中:

    在.NET Framework 2.0版,Array类实现System.Collections.Generic.IList ,System.Collections.Generic.ICollection 以及System.Collections.Generic.IEnumerable 通用接口。这些实现是在运行时提供给数组的,因此对于文档构建工具而言是不可见的。因此,通用接口不会出现在Array类的声明语法中,并且没有接口成员的参考主题,这些参考成员只能通过将数组转换为通用接口类型来访问(显式接口实现)。

    因此,您的Employee[]工具IEnumerable 。

    2020-02-08 20:43:09
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载