c# - 将数组转换为 IEnumerable<T>

标签 c# arrays casting type-conversion ienumerable

令我惊讶的是,我得到以下声明:

public static IEnumerable<SomeType> AllEnums 
  => Enum.GetValues(typeof(SomeType));

提示无法从 System.Array 转换为 System.Collection.Generic.IEnumerable。我认为后者是从前者继承而来的。显然我错了。

因为我无法对其进行 LINQ 或 .ToList,所以我不确定如何正确处理它。我宁愿避免显式转换,因为它是 enum 的一堆值,我不认为 as SomeType -ing 它会有多大用处,也.

最佳答案

通用Array 基类没有类型,因此它不实现任何类型特定的接口(interface);然而,vector 可以直接转换 - 而 GetValues 实际上返回一个 vector;所以:

public static IEnumerable<SomeType> AllEnums
    = (SomeType[])Enum.GetValues(typeof(SomeType));

或者更简单:

public static SomeType[] AllEnums 
    = (SomeType[])Enum.GetValues(typeof(SomeType));

关于c# - 将数组转换为 IEnumerable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744199/

相关文章:

c# - 是否可以在不指定数据库的情况下连接到 SQL Server?

c++ - 为什么我必须在这里使用dynamic_cast

c# - ASP.NET 配置文件中的密码策略(成员资格)

php - 仅将最高级别的认证添加到阵列中

php - 将日期数组中的日期替换为 mysql 查询中的值

arrays - 将 Scala 数组转换为唯一排序列表的有效方法

c - 段错误(在kali中使用gcc)

java - 具有多个有界类型和未经检查的转换的 Class.asSubclass

c# - 如何获取字典中的前 N ​​个(百分比)值?

c# - 当受影响的控件被隐藏时,WPF Storyboard动画是否继续运行?